Commit graph

283 commits

Author SHA1 Message Date
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
Jonas 'Sortie' Termansen
e0eabd0e5f <dirent.h> now declares size_t. 2012-03-12 02:03:46 +01:00
Jonas 'Sortie' Termansen
8399b1a2ee Made <sys/types.h> more POSIX compliant. 2012-03-12 02:00:00 +01:00
Jonas 'Sortie' Termansen
3cab1113cf Made EOPNOTSUPP an alias for ENOTSUP. 2012-03-12 01:46:12 +01:00
Jonas 'Sortie' Termansen
2cdeb575f8 Renamed EACCESS to EACCES.
Stupid POSIX.
2012-03-12 01:43:00 +01:00
Jonas 'Sortie' Termansen
6de3c462be Added EMFILE. 2012-03-12 01:37:50 +01:00
Jonas 'Sortie' Termansen
44e2537d7b Added mode_t to <sys/types.h>.
Gonna do something about that header.
2012-03-12 01:31:48 +01:00
Jonas 'Sortie' Termansen
d564574cd0 Added fseterr(3). 2012-03-12 01:31:48 +01:00
Jonas 'Sortie' Termansen
366cc2549a Added the stdio_ext(3) API.
The API is available in <stdio.h> without __ prefix if _SORTIX_SOURCE.
2012-03-12 00:38:48 +01:00
Jonas 'Sortie' Termansen
d033a58b10 Added a hacky definition of MB_CUR_MAX. 2012-03-11 20:49:50 +01:00
Jonas 'Sortie' Termansen
4ad0d360da Added EILSEQ. 2012-03-11 20:44:57 +01:00
Jonas 'Sortie' Termansen
9fa5690d79 Added time_t declaration to <time.h>. 2012-03-11 20:38:55 +01:00
Jonas 'Sortie' Termansen
beb88d0443 Added EPIPE. 2012-03-11 20:11:32 +01:00
Jonas 'Sortie' Termansen
c2660e5432 Added EBUSY. 2012-03-10 23:18:27 +01:00
Jonas 'Sortie' Termansen
f8bcf3117d Added ENOTEMPTY. 2012-03-10 23:12:31 +01:00
Jonas 'Sortie' Termansen
bdd8b2a77a Added strnlen(3). 2012-03-10 23:04:49 +01:00
Jonas 'Sortie' Termansen
cde10097e6 Fixed realloc(3) bug causing buffer overruns. 2012-03-07 20:52:44 +01:00
Jonas 'Sortie' Termansen
8a9a0c58ea Added kernelinfo(2), which reads a kernel information string.
Currently it lets you query the name of the kernel, its version, and the
build timestamp of the kernelinfo.cpp file.
2012-03-07 18:04:59 +01:00
Jonas 'Sortie' Termansen
d6f9505d3b Made getdelim(3) follow POSIX-2008 a bit more closely.
It now reads lines that aren't delimited, but terminated by EOF.
2012-03-07 15:52:07 +01:00
Jonas 'Sortie' Termansen
3cc1f7a687 Made fgetc(3) and fputc(3) use unsigned char internally. 2012-03-07 15:51:25 +01:00
Jonas 'Sortie' Termansen
2722c3f03d Added EINTR. 2012-03-06 13:36:44 +01:00
Jonas 'Sortie' Termansen
9f7175fbc8 Forgot to add fputs(3) to <stdio.h>. 2012-03-06 13:24:10 +01:00
Jonas 'Sortie' Termansen
065ceae509 Added fgets(3). 2012-03-06 13:15:02 +01:00
Jonas 'Sortie' Termansen
6bcb3d7384 Added stat(2) and fstat(2) in the kernel.
It's a bit hacky, but it works.

lstat(2) currently redirects to stat(2).
2012-03-06 13:10:59 +01:00
Jonas 'Sortie' Termansen
fa4bd9e7a8 Forgot to add extern "C" to sscanf. 2012-03-05 16:06:15 +01:00
Jonas 'Sortie' Termansen
c03738a9f3 Added a stub for sscanf(3).
This stub implements an ugly hack to help port binutils.

Hopefully we'll get a real scanf family of functions soon.
2012-03-05 16:01:43 +01:00
Jonas 'Sortie' Termansen
f089a030b4 Added stub for lstat(2). 2012-03-05 15:50:41 +01:00
Jonas 'Sortie' Termansen
4b2c22d480 Added access(2). 2012-03-05 15:46:23 +01:00
Jonas 'Sortie' Termansen
cd350620f2 Added fputs(3). 2012-03-05 13:32:42 +01:00
Jonas 'Sortie' Termansen
bc38dc5127 Added a stub for environ(3). 2012-03-05 13:20:37 +01:00
Jonas 'Sortie' Termansen
25b33b4755 Fixed broken declaration of mktemp(3) in <stdlib.h>. 2012-03-05 13:10:56 +01:00
Jonas 'Sortie' Termansen
85549b5688 Uncommented warning in <assert.h> to prevent compile errors in binutils.
This is because they treat warnings as errors.
2012-03-05 13:09:00 +01:00
Jonas 'Sortie' Termansen
c1affdf6db Added missing extern "C" linkages in libmaxsi/string.cpp. 2012-03-05 13:08:02 +01:00
Jonas 'Sortie' Termansen
7082ac4ac9 Forgot to add extern "C" linkage to mktemp(3). 2012-03-05 13:05:45 +01:00
Jonas 'Sortie' Termansen
5449ae78f4 Added atol(3) and atoll(3). 2012-03-05 12:53:58 +01:00
Jonas 'Sortie' Termansen
422d2fd579 Added qsort(3).
This is a rather slow implementation. Will be fixed soon.
2012-03-05 12:37:59 +01:00
Jonas 'Sortie' Termansen
12e8dd6d81 Added stub for getenv(3). 2012-03-04 23:55:41 +01:00
Jonas 'Sortie' Termansen
00c3aaa919 Added stub for ctime(3). 2012-03-04 23:51:39 +01:00
Jonas 'Sortie' Termansen
e2d673294c Added a stub for assert(3). 2012-03-04 23:40:30 +01:00
Jonas 'Sortie' Termansen
7c33b3f10f Always show the declaration of sbrk(2).
This was done because binutils need this to compile.
2012-03-04 23:36:04 +01:00
Jonas 'Sortie' Termansen
be98120b49 Added stubs for setjmp(3) and longjmp(3). 2012-03-04 23:15:32 +01:00
Jonas 'Sortie' Termansen
390150839e Added a stub for umask(2). 2012-03-04 23:01:41 +01:00
Jonas 'Sortie' Termansen
6f9b8b2f64 Added stubs for chmod(2) and fchmod(2). 2012-03-04 22:57:44 +01:00
Jonas 'Sortie' Termansen
9b2de25f9b Added strcasecmp(3), strncasecmp(3) and <strings.h>.
Why <strings.h>? Stupid POSIX.
2012-03-04 22:46:24 +01:00
Jonas 'Sortie' Termansen
2b57319c1c Added stub for time(3). 2012-03-04 22:26:27 +01:00
Jonas 'Sortie' Termansen
d3c4df72b1 Added st_{a,c,m}time to struct stat. 2012-03-04 22:25:47 +01:00
Jonas 'Sortie' Termansen
c0a02248da Added <sys/time.h>, struct timeval and gettimeofday(3) stub. 2012-03-04 22:05:52 +01:00
Jonas 'Sortie' Termansen
e006687645 Added abort(3) to <stdlib.h>. 2012-03-04 21:49:03 +01:00
Jonas 'Sortie' Termansen
5e75f5c428 Added fcntl(3) with FD_GET and FD_SET. 2012-03-04 21:36:40 +01:00
Jonas 'Sortie' Termansen
777fc04682 Added <time.h>, clock_t, and a stub for clock(3). 2012-03-04 18:38:23 +01:00
Jonas 'Sortie' Termansen
0bd6a4ff67 Added <math.h>. 2012-03-04 18:17:04 +01:00
Jonas 'Sortie' Termansen
6695da9229 Added strncat(3). 2012-03-04 18:12:54 +01:00
Jonas 'Sortie' Termansen
73e2d9db3c Made errno(3) a macro to itself. 2012-03-04 18:06:24 +01:00
Jonas 'Sortie' Termansen
38f27a45fc Added strpbrk(3). 2012-03-04 17:44:24 +01:00
Jonas 'Sortie' Termansen
b1b123109a Added mktemp(3).
This is a stupid, ugly function added for compatibility.
2012-03-04 17:29:50 +01:00
Jonas 'Sortie' Termansen
5d826ec284 Added strstr(3). 2012-03-04 17:20:42 +01:00
Jonas 'Sortie' Termansen
6c6e1091a1 Added memmove(3). 2012-03-04 17:10:52 +01:00
Jonas 'Sortie' Termansen
a52200f4a7 Added strncpy(3).
This function is stupid.
2012-03-04 17:00:59 +01:00
Jonas 'Sortie' Termansen
90ea0d3e64 Added strdup(3) to <string.h>. 2012-03-04 16:54:53 +01:00
Jonas 'Sortie' Termansen
ac7e55ffbd Added st_dev to struct stat. 2012-03-04 16:48:24 +01:00
Jonas 'Sortie' Termansen
f9f59e9536 Added ELAKE. 2012-03-03 01:06:32 +01:00
Jonas 'Sortie' Termansen
0ed0082070 Added execv(3) and execve(3).
Removed the older libmaxsi system call.
2012-03-02 15:00:11 +01:00
Jonas 'Sortie' Termansen
c5302df277 error(3) now doesn't print an error if supplied errno=0. 2012-03-01 16:42:13 +01:00
Jonas 'Sortie' Termansen
982b9a732a Fixed bug where fopen(3) used the wrong mode in call to fdopen(3). 2012-03-01 14:30:20 +01:00
Jonas 'Sortie' Termansen
cbdf54fcdd Moved SEEK_SET, SEEK_CUR, and SEEK_SET to <sortix/seek.h>. 2012-02-24 17:34:50 +01:00
Jonas 'Sortie' Termansen
5de83df6ec Unified constants from sortix/filesystem.h and <fcntl.h> in <sortix/fcntl.h>. 2012-02-23 13:15:40 +01:00
Jonas 'Sortie' Termansen
03273d0076 Added stubs for stat(2), and fstat(2). 2012-02-22 00:30:34 +01:00
Jonas 'Sortie' Termansen
75b3b9c858 Added a Maxsi::String::Substring function. 2012-02-21 23:23:57 +01:00
Jonas 'Sortie' Termansen
2a4a51fafc Added getline(3), getdelim(3), sortix_gets(3) and gets(3).
gets(3) exists and is an alias for sortix_gets(3) if _SORTIX_SOURCE.

sortix_gets(3) returns a pointer to a safe newly read and allocated line.
2012-02-13 01:07:02 +01:00
Jonas 'Sortie' Termansen
3bf5b1f17e Added realloc(3). 2012-02-13 00:31:05 +01:00
Jonas 'Sortie' Termansen
4804e60a8b Fixed race condition when building libmaxsi with -j.
The headers could end up being made before their dirs were ready.
2012-02-12 13:54:07 +01:00
Jonas 'Sortie' Termansen
c8dfe630af Removed annoying warnings when declaring x64 systemcalls.
Actually, the warnings are true, but that's a task for later.
2012-02-12 13:20:53 +01:00
Jonas 'Sortie' Termansen
c6682265aa Fixed minor compile errors in fddir-sortix.c. 2012-02-12 13:20:53 +01:00
Jonas 'Sortie' Termansen
e05e934beb Changed return type of FILE::tell_func to off_t. 2012-02-12 13:20:53 +01:00
Jonas 'Sortie' Termansen
fec176fa15 Refactored the libmaxsi/ directory.
C and C++ files are now kept together and so are the mxmpp declarations.

Header files are now stored in include/ and mxmpp'd into preproc/.

All other code now -I ../libmaxsi/preproc.

And other stuff to make this happen, including refactoring Makefile.
2012-02-12 13:20:53 +01:00
Jonas 'Sortie' Termansen
b4131def9f The offsetof macro now expands to __builtin_offsetof.
The compiler knows this stuff best, anyway.
2012-02-11 19:50:27 +01:00
Jonas 'Sortie' Termansen
d693f8a2f4 Fixed broken <stddef.h>. 2012-02-11 19:38:51 +01:00
Jonas 'Sortie' Termansen
6d1129c29a Removed compile warnings related to feature macros.
Accidentally commited them. Oops.
2012-02-11 19:03:17 +01:00
Jonas 'Sortie' Termansen
ed68db03fb Replaced SORTIX_EXTENSIONS macro with _SORTIX_SOURCE macro.
<features.h> declares _SORTIX_SOURCE if no conflicting macros are
declared, such as _GNU_SOURCE.

Fixed g++ automatically declaring _GNU_SOURCE, but Sortix isn't GNU.

Replaced SORTIX_UNIMPLEMENTED macro with __SORTIX_SHOW_UNIMPLEMENTED.
2012-02-11 18:51:55 +01:00
Jonas 'Sortie' Termansen
88c7788b4e Fixed stdint.h include guard conflicting with unistd.h. 2012-02-11 18:46:17 +01:00