703b0a1435
libc: Make tv_usec in timeval signed, as it should be
2022-10-27 17:20:46 +02:00
50cda50f01
Kernel, libc: Add F_GETFD, F_SETFD and FD_CLOEXEC
2022-10-27 17:17:24 +02:00
fcf53ef6a5
Kernel: Make waitpid() block by default unless WNOHANG is specified
2022-10-27 17:05:42 +02:00
da8a3de480
It's actually S_ISCHR in this case
2022-10-27 08:10:35 +02:00
cdb1f46b93
libc: Add S_ISDEV
2022-10-27 08:09:10 +02:00
f9dad8a8d6
Kernel, libc: Stub out struct stat.st_dev
2022-10-27 08:01:33 +02:00
9b0f6b6595
Kernel, libc: Add O_EXCL
2022-10-27 07:55:59 +02:00
211c76f920
libc: Provide a definition for timeval
2022-10-27 07:55:02 +02:00
1c35eabb2b
open(): Add a third optional mode argument
2022-10-27 07:52:57 +02:00
a3c6635f3e
Kernel, libc: Add O_APPEND and stub out O_CREAT and O_TRUNC
2022-10-27 07:43:55 +02:00
41f7232b77
Devices: Return EOF after first read for some devices
...
Still not optimal.
2022-10-26 20:54:47 +02:00
796d61020b
argv might be null when we're init
2022-10-26 19:22:50 +02:00
4f6333ca17
compilation fix
2022-10-26 19:17:26 +02:00
8eb986df63
libc: Add program_invocation_name
...
This is a GNU extension, but I'm fine with adding it to libc.
It's guarded by the _GNU_SOURCE feature test macro anyways.
2022-10-26 19:17:05 +02:00
7d20c507b1
Kernel, libc, userspace: Implement command-line arguments (argv)
...
The only thing missing now is for sh to pass them on.
2022-10-26 18:57:06 +02:00
9b1e50ae27
libc: Add EACCES
2022-10-25 20:29:56 +02:00
57658f2d3e
libc: Add EOPNOTSUPP
2022-10-25 20:28:12 +02:00
13fce2c4b3
libc: Update headers with more comments
2022-10-25 19:27:24 +02:00
af452e2b2a
Kernel, libc: Add dup2()
2022-10-25 18:58:06 +02:00
b17ff6319a
libc: compilation fix for libc's printf
2022-10-24 20:47:00 +02:00
33f6765a5c
libc: Make the userspace printf much better
2022-10-24 17:21:40 +02:00
315d2f9f24
libc: actually return buf in getcwd()
2022-10-24 17:08:40 +02:00
0dec5f7bad
libc: Add dummy getcwd()
2022-10-24 17:05:28 +02:00
b615166373
libc: Stub out tmpfile() as well as add an empty math.h
2022-10-23 18:58:48 +02:00
58b01b74e2
Kernel, libc: Add stat()
2022-10-23 18:35:32 +02:00
865018e7f8
libc: Implement dirfd, rewinddir, telldir and seekdir
2022-10-23 14:59:06 +02:00
e457b88b04
Kernel, libc: Implement O_DIRECTORY and use that in dirent.h
2022-10-23 14:46:27 +02:00
8bf2904d74
libc: Implement a basic subset of dirent.h
2022-10-23 14:41:45 +02:00
78d72c2f0c
Kernel, libc: Add a getdents() system call
...
This is meant to be a low-level interface to implement dirent.h on top of.
2022-10-23 14:03:46 +02:00
19ee21ae5a
libc: Make string_to_integer_type static
2022-10-23 12:28:25 +02:00
35616993f8
libc: Add div(), ldiv(), and lldiv()
2022-10-23 12:26:48 +02:00
51bd7de17b
libc: Patch mman.h so libgcov builds
2022-10-23 12:10:05 +02:00
43180b777e
libc: Stub out qsort()
2022-10-23 11:19:08 +02:00
9dc8bfbdce
libc: Define a dummy FILENAME_MAX
2022-10-23 11:17:22 +02:00
bd8825231a
libc: Stub out sscanf()
2022-10-23 11:16:36 +02:00
d82238b485
libc: Add return value to ungetc()
2022-10-23 11:14:18 +02:00
d75de5f423
libc: Partially implement ungetc
2022-10-23 11:12:54 +02:00
51580bb846
libc: Add abs(), labs() and llabs()
...
Just needed to alias them to GCC builtins.
2022-10-23 11:10:26 +02:00
c02f2e128d
libc: Stub out ungetc()
2022-10-23 10:34:49 +02:00
f0eeaa25a3
libc: More inttypes.h
2022-10-23 10:31:56 +02:00
0c33fcdff2
libc: Stub out setvbuf, and add S_ISREG
2022-10-23 10:09:20 +02:00
fa35e883d7
libc: Stub out strftime
2022-10-23 10:01:03 +02:00
06f9ffc184
libc: Add EXIT_SUCCESS, EXIT_FAILURE, RAND_MAX and BUFSIZ
2022-10-22 21:39:51 +02:00
dd9b90d69d
compilation fix :)
2022-10-22 21:16:51 +02:00
7600bc5582
libc: Add strings.h
2022-10-22 21:13:22 +02:00
433b307cb2
libc: Add strcoll()
...
No locale support, this just calls strcmp()
2022-10-22 21:00:59 +02:00
4725538aa7
Tests: Add tests for memmove and memcmp + correct our memcmp implementation
2022-10-22 19:04:19 +02:00
8908faf6e2
libc: Add strchrnul()
...
Another GNU extension, it's ok.
2022-10-22 18:37:02 +02:00
503a04f0e9
libc: Add strpbrk()
2022-10-22 17:54:33 +02:00
4d71c0ef04
libc: Implement strndup()
2022-10-22 17:49:44 +02:00
ac8a23d733
wrong type :)
2022-10-22 14:40:30 +02:00
189986d23f
libc: Rename pstname() to pstatname()
...
To avoid confusion with ptsname().
2022-10-22 14:30:41 +02:00
6ac57a2f5c
libc: Add support for pstat()
2022-10-22 14:26:42 +02:00
a4eed362b6
libc: Implement fseeko() and ftello()
2022-10-22 12:41:15 +02:00
759c8a8cab
libc: Make fpos_t no longer a struct
2022-10-22 12:39:37 +02:00
9bbb5d0c07
libc: Implement strspn (with a test)
2022-10-22 12:36:31 +02:00
551d731627
libc: Add FIXME
2022-10-22 12:30:30 +02:00
063e2d5e7a
libc: Add more spacing to stdio.cpp
2022-10-22 12:21:04 +02:00
6dc51abfc8
libc: Add remove() stub
2022-10-22 12:20:05 +02:00
81c337cf9a
libc: Add struct tm and localtime(), gmtime() stubs
2022-10-22 12:17:48 +02:00
91969d4d48
libc: strtoul's endptr must not be const
2022-10-22 12:12:52 +02:00
1f5f6a5e3b
libc: Add strcspn (with a test)
2022-10-22 11:57:25 +02:00
27a18a608c
libc: Implement fgets, fgetc, getc, getchar (with buffered read IO)
2022-10-22 11:38:16 +02:00
51e024588e
libc: Update inttypes.h
...
Turns out it was incorrect.
2022-10-22 11:23:12 +02:00
0faabe02e5
Kernel, libc: Implement O_CLOEXEC
2022-10-22 10:28:02 +02:00
fb88459263
libc: Add all missing errors to strerror()
2022-10-22 10:14:40 +02:00
b2f5a0502f
Kernel, libc: Implement O_NONBLOCK
2022-10-21 21:51:03 +02:00
43073cfdbb
Add new __lc_used macro
2022-10-21 18:39:46 +02:00
fcd6d9b9f5
Add FIXME
2022-10-21 18:37:18 +02:00
bef9158450
Kernel, libc: Add isatty() and F_ISTTY to fcntl()
2022-10-21 18:34:31 +02:00
93207820b3
libc: Add a few errors to errno.h
...
As well as ino_t, which I forgot in the fstat() commit :)
2022-10-21 18:34:01 +02:00
62fa773b27
libc: Add dummy argv
2022-10-21 18:33:06 +02:00
6d7a8a0d0b
libc: Add very basic strtoul()
...
As well as returning NULL in getenv() instead of aborting.
2022-10-21 18:32:46 +02:00
bf026d0dea
libc: Add bad time() function
...
It's just an alias for clock(). Which is not good. But it's a stub, that's the point.
2022-10-21 18:32:01 +02:00
c8a37eaf70
libc: Add SIGINT define
2022-10-21 18:31:19 +02:00
fcf191aa7a
Kernel, libc: Add fstat()
2022-10-21 18:31:09 +02:00
f7cf395f71
Kernel, libc: Add access()
2022-10-20 19:03:24 +02:00
aebd860947
libc: Add stdin
...
Aka keyboard :)
2022-10-19 20:43:04 +02:00
7ec221c36d
libc: Move __luna_syscall* declarations to asm
2022-10-19 17:50:09 +02:00
5816f54293
libc: Move SYS_* constants to sys/syscall.h
2022-10-19 17:49:55 +02:00
b035795eb3
Kernel: Move errno.h and (k)assert.h out of the main include directory
...
This is mostly so IDEs don't pick them up instead of the userspace headers :)
2022-10-19 17:41:23 +02:00
aa90e4a8d9
libc: Implement freopen()
2022-10-19 17:32:59 +02:00
671f2a2de3
Kernel, libc: Implement waitpid()
...
FIXME: exec() is now doing weird page table stuff. But at least it works, no panics :)
2022-10-18 21:30:52 +02:00
f1bfa6bec8
Build system: more cflags + stripping
2022-10-18 18:28:28 +02:00
01564cb905
libc: Adapt libc to getprocid() + add getppid()
2022-10-18 17:36:33 +02:00
3c1146f2c5
libc: Implement setjmp() and longjmp()
2022-10-17 21:22:18 +02:00
511ad67a9a
fdopen: Check for malloc errors
2022-10-17 20:54:32 +02:00
e17a21dbad
libc: Use fdopen() after calling open() in fopen()
2022-10-17 20:54:09 +02:00
8b17065718
Kernel, libc: Rename gettid() to getpid() and move it to unistd.h
2022-10-17 20:08:44 +02:00
87ef210759
Kernel, libc: Remove spawn()
...
Now, fork() and exec() are both implemented. More POSIX-y, thus spawn can be removed.
2022-10-17 19:55:01 +02:00
e7522c21ca
libc: Document fork()
2022-10-17 18:56:04 +02:00
64f5078494
Kernel, libc: Implement fork()
...
This time for real.
Also, add a new per-user-task virtual address allocator (UserHeap), so that mmap'ed pages are in user range and can be copied.
2022-10-17 18:43:35 +02:00
9b39d618de
Kernel, libc: Implement spawn()
...
This function is a Luna alternative to fork() and exec().
Why? Simply because I can't figure out for the life of me how to implement a working fork().
So meanwhile, we have spawn() as a replacement. exec() still exists, though.
2022-10-16 18:48:35 +02:00
6d821d2638
libc: Add support for mkdir()
2022-10-16 17:37:29 +02:00
f35bbe52b7
fnctl: Do not switch on cmd
2022-10-16 17:27:15 +02:00
e1e86ab889
libc: Add support for EEXIST, ENOTDIR, ENOSPC, ENOTSUP and EPIPE to strerror()
2022-10-16 17:24:58 +02:00
d2e2883a79
Kernel: Make mkdir() accessible to userspace
2022-10-16 17:22:12 +02:00
42b6b927c9
libc: Implement strlcpy(), and make strncpy() standard-compliant
2022-10-15 17:24:22 +02:00
48f38bdcef
libc: More inttypes.h
2022-10-15 16:53:26 +02:00
45afd3e243
Replace the rand() which reads from /dev/random with a Mersenne PRNG.
...
Much better now.
Also, it is seeded by reading from /dev/random at startup. Not sure if that's the best idea, but we'll see.
2022-10-15 16:46:54 +02:00