Commit graph

262 commits

Author SHA1 Message Date
Jonas 'Sortie' Termansen
715a4588e5 Fixed wrong return value of ioleast(3) functions. 2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
bff1abda2e Thread secured the kernel heap. 2012-08-04 18:35:22 +02:00
Jonas 'Sortie' Termansen
260eab8e44 Fixed problems in strncmp(3) and strncasecmp(3).
This was introduced during the recent refactoring.
2012-07-31 20:41:19 +02:00
Jonas 'Sortie' Termansen
261c063f4f Refactored libmaxsi/file.c into a multiple files. 2012-07-31 14:35:54 +02:00
Jonas 'Sortie' Termansen
87c8120b95 Refactored libmaxsi/string.cpp into multiple files.
However, parts libmaxsi/string.cpp remains as the kernel and parts of the
standard library still rely on <libmaxsi/string.h>.
2012-07-26 14:17:56 +02:00
Jonas 'Sortie' Termansen
01df97080e Refactored libmaxsi/io.cpp into multiple files.
This creates more object files in the static library which reduces the size
of statically linked files as only the relevant object files are included.
In my experience, it reduced the size of the system initrd from 1.9 MiB to
1.6 MiB which is valuable.
2012-07-25 23:05:05 +02:00
Jonas 'Sortie' Termansen
db5d216cbe Added ReadParamString to libmaxsi as a hack. 2012-07-24 21:26:09 +02:00
Jonas 'Sortie' Termansen
4dda38cab3 Added ENODRV. 2012-07-24 19:56:32 +02:00
Jonas 'Sortie' Termansen
143120d160 Added tcgetwinsize(2) for determining terminal resolution.
Unfortunately this area is not standardized by POSIX. Linux uses an ioctl
which is not that bad, but I'd like to have a designated function. I'm not
sure if this facility is powerful enough and whether it should be improved.
Also note that I use a struct winsize as on Linux, but I use size_ts instead
for the heck of it. Perhaps I should use another name for the struct.
2012-07-24 18:43:34 +02:00
Jonas 'Sortie' Termansen
1761db9f27 Updated copyright format in unistd.h.
This is because I usually copy the header of new files from unistd.h.
2012-07-24 17:03:14 +02:00
Jonas 'Sortie' Termansen
d75a7145ef Updated vga code to newer coding conventions. 2012-07-23 00:05:31 +02:00
Jonas 'Sortie' Termansen
22990b77b8 Refactored the internal kernel memory management API.
It is now permission-oriented, not just user/kernel oriented.

Added <sys/mman.h> with nice PROT_{READ,WRITE,EXEC,FORK} constants.
2012-07-06 17:18:07 +02:00
Jonas 'Sortie' Termansen
ec5fa92761 Programmers can now redirect what the errno macro refers to. 2012-07-06 17:18:06 +02:00
Jonas 'Sortie' Termansen
887abdfe87 Added a CRC32 function to libmaxsi. 2012-07-02 17:16:23 +02:00
Jonas 'Sortie' Termansen
0ab2bbbd1b Finally fixed the loaderbug!
Programs were crashing randomly at startup on the kthread branch. After some
investigation, it turned out that the programs weren't correctly loaded by
the program loader in rare cases. Although, all investigation showed that
the program loader was correct and so was the interrupt routines (well,
almost, but nothing that could really trigger this). Yada yada, a few months
later I discovered that memcpy(3) was being corrupted by an interrupt handler
(which was correct). Turns out memcpy used stack space it hadn't allocated.
This is a Linux optimization that I had forgotten to disable with
-mno-red-zone in libmaxsi and thus interrupts just overwrote the stack of
optimized functions. Eek!
2012-07-02 16:09:13 +02:00
Jonas 'Sortie' Termansen
aac12add54 Added stubs for functions in dlfcn.h. 2012-05-30 23:58:04 +02:00
Jonas 'Sortie' Termansen
6eb6a14ace Added stubs for fscanf(3) and mbtowc(3).
This helps gzip build.
2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen
622e0176e3 Added stubs for gmtime(3), localtime(3) and utime(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen
45981431de Added atexit(3) and on_exit(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen
c5c92d9615 Added ungetc(3). 2012-05-29 22:17:27 +02:00
Jonas 'Sortie' Termansen
b2b54d108d Added getdtablesize(3) for gzip compatibility.
Remove this once sysconf(_SC_OPEN_MAX) is implemented.
2012-05-28 23:11:44 +02:00
Jonas 'Sortie' Termansen
35347ec709 Added raise(3). 2012-05-28 23:10:55 +02:00
Jonas 'Sortie' Termansen
309416c291 Renamed error(3) to gnu_error(3), but with a redirect.
This fixes compatibility issues with programs that like to make their own
error function. This includes zlib and gzip.
2012-05-28 23:03:03 +02:00
Jonas 'Sortie' Termansen
271c64e537 Added a stub locale.h header. 2012-05-28 22:57:03 +02:00
Jonas 'Sortie' Termansen
8ae9f6bd79 Added struct tm and implemented a gettimeofday stub.
Note that gettimeofday calls uptime() and has no idea what the time was when
the system booted.
2012-05-28 22:51:20 +02:00
Jonas 'Sortie' Termansen
341bd73cb0 GCC no longer fixes stdio.h because of va_list.
Note that for non-ANSI C programs, stdio.h includes stdarg.h which defines
macros that stdio.h wasn't supposed to define.
2012-05-28 22:37:45 +02:00
Jonas 'Sortie' Termansen
500f8651bb Prevent GCC from fixing headers that are OK. 2012-05-27 23:46:59 +02:00
Jonas 'Sortie' Termansen
4b252fc55e <libmaxsi/platform.h> now autodetects the current platform. 2012-05-27 23:08:20 +02:00
Jonas 'Sortie' Termansen
87b81080d5 Added sortix_strerror(3) which replaces strerror(3).
The string returned is now const - POSIX did not allow modifying the string
in any case, conforming applications should not break. If _SORTIX_SOURCE is
defined strerror(3) automatically redirects to sortix_strerror(3),
otherwise the application will receive the traditional function.
2012-05-27 17:38:00 +02:00
Jonas 'Sortie' Termansen
9905a2f2d6 Added EINIT, "Not initialized". 2012-05-27 17:20:33 +02:00
Jonas 'Sortie' Termansen
e8d75643ea More efficient memcpy(3) for aligned data. 2012-05-27 14:11:35 +02:00
Jonas 'Sortie' Termansen
a75b215fe3 Added fpipe(3) providing pipe(2) through the FILE interface. 2012-05-21 12:52:27 +02:00
Jonas 'Sortie' Termansen
795b1ef4fd Added String::Combine.
It was previously commented out because it was broken.
2012-05-04 13:36:21 +02:00
Jonas 'Sortie' Termansen
92c5533820 Improved the implementation of the exec* functions. 2012-04-30 21:10:02 +02:00
Jonas 'Sortie' Termansen
6367a2352e Added sforkr(2) that controls the child registers as well.
sfork(2) now calls sforkr(2) with the current registers.

This will prove useful in creating threads, where user-space now can fully
control what state the child will start in. This is unlike the Linux clone
system call that accepts a pointer to the child stack; this is more powerful
and somehow simpler. Note that this will create a rather raw thread; no
thread initization has been done by the standard thread API (when it is
implemented), so this feature shouldn't be used by programmers unless they
know what they are doing.

fork(2) now calls sfork(2) directly. Also removed fork(2) and sfork(2) from
the kernel as they are done using sforkr(2) now. So technically they aren't
system calls right now, but that could always change.
2012-04-05 23:00:47 +02:00
Jonas 'Sortie' Termansen
6f36ecf0b3 execve(2) now pushes envp to the new stack and sets up registers.
This fully implements environmental variables over exec.
2012-04-04 01:49:14 +02:00
Jonas 'Sortie' Termansen
60b9a84a51 execv(3) now passes environ(7) to execve(2). 2012-04-04 01:38:45 +02:00
Jonas 'Sortie' Termansen
33645eb347 <unistd.h> now declares environ(7) if _WANT_ENVIRON.
Note that it is very bad style of programs to access it directly.
2012-04-04 01:37:05 +02:00
Jonas 'Sortie' Termansen
05b29ce25a Renamed rfork(2) to sfork(2) to avoid compatibility issues.
sfork is much like rfork except sharing is default for everything.

Eventually, I'll make a rfork(3) wrapper function around sfork(2) to
provide compatibility to BSD programs.

I don't like Linux clone(2): that's some messy function.
2012-04-04 00:29:25 +02:00
Jonas 'Sortie' Termansen
dd5157da6a Implemented setenv(3), putenv(3), getenv(3), clearenv(3), sortix_getenv(3),
unsetenv(3), envlength(3), getenvindexed(3), and environ(7).

This provides the user-space foundation for environmental variables.

Note that this works over fork(2), but not execve(2) yet.
2012-04-03 20:23:28 +02:00
Jonas 'Sortie' Termansen
5d59f0ed03 Added EBOUND. 2012-04-02 20:24:56 +02:00
Jonas 'Sortie' Termansen
95a088fec5 Added a dummy implementation rfork(2) equal to fork(2).
Note that in my implementation, you share per default, unless you ask.
2012-04-02 16:30:13 +02:00
Jonas 'Sortie' Termansen
cd0e402bbb Added {,l,ll,imax}abs(3). 2012-03-27 16:36:55 +02:00
Jonas 'Sortie' Termansen
9ab0bc5474 Added {,p}{read,write}{all,least}(3). 2012-03-24 15:34:30 +01:00
Jonas 'Sortie' Termansen
c62eb09cdc Added stubs for pread(2) and pwrite(2).
These are not implemented yet because the current kernel design is bad.

However, I need the stubs for other code.
2012-03-24 15:23:07 +01:00
Jonas 'Sortie' Termansen
757184fd5c Added EEOF. 2012-03-24 15:19:16 +01:00
Jonas 'Sortie' Termansen
db79994e64 Refactored all the sortix headers into a include directory.
Also got rid of trailing white space. That corrupted .git/.

Big ass-commit because of recovered .git directory.
2012-03-22 00:52:29 +01:00
Jonas 'Sortie' Termansen
e496c07764 Added a <libmaxsi/integer.h> header with divide-round-up functions. 2012-03-21 16:23:05 +01:00
Jonas 'Sortie' Termansen
e0e0cadf4a Changed error message for ENOMEM to something sensible. 2012-03-19 02:26:32 +01:00
Jonas 'Sortie' Termansen
f54cb6ab94 Added EAGAIN and made read(1) and write(1) retry if they get it. 2012-03-17 15:35:45 +01:00