Commit Graph

124 Commits

Author SHA1 Message Date
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
18f1f8b7ca Add VERY HACKY rand() implementation. 2022-10-15 16:31:08 +02:00
dd358eca29 libc/libgen.cpp: Remove #include <luna.h>
This header was included for the NOT_IMPLEMENTED macro.

Now it is implemented.
2022-10-15 16:09:54 +02:00
116e7326a4 libc: Implement dirname() and basename() 2022-10-15 16:08:27 +02:00
5256166e7a libc: Fix strrchr 2022-10-15 16:06:41 +02:00
6953a28ce8 libc: Implement strrchr() 2022-10-15 15:16:19 +02:00
f13c48b562 libc: make strerror() return "Unknown error" instead of an invalid pointer 2022-10-15 15:14:30 +02:00
7139b4403f libc: Add EPIPE (not returned by anything yet) 2022-10-15 15:14:02 +02:00
e3e33bacbc libc: Add stubbed signal.h header 2022-10-15 15:13:38 +02:00
8d552b1522 libc: Add setjmp.h stub functions (not implemented) 2022-10-15 15:13:25 +02:00
46f60b192a libc: Add libgen.h stub functions (not implemented) 2022-10-15 15:13:10 +02:00
9aa96de61d libc: Start implementing inttypes.h 2022-10-15 15:12:53 +02:00
6507146c60 libc: Add Luna-specific limits 2022-10-15 14:31:55 +02:00
f50017912d libc: Implement atoi(), atol() and atoll() 2022-10-15 14:02:24 +02:00
2395c7a871 libc: Implement _Exit
Exactly the same as _exit, but in stdlib.h instead of unistd.h
2022-10-15 14:02:10 +02:00
b1739f7f0d libc: Add support for the new clock() system call 2022-10-15 13:21:22 +02:00
3a9dddaa57 Kernel, libc: Remove the rand() system call
That's why we now have a VFS and a /dev pseudo-filesystem. To provide that kind of things.

Remember, everything is a file!!

The new way to ask the kernel for random numbers is to read from /dev/random.
2022-10-15 13:04:48 +02:00
225284a6ca libc: Add support for mprotect() 2022-10-15 12:59:13 +02:00
613f8170b6 Kernel, libc: Implement mprotect() and use proper PROT_* values 2022-10-15 12:57:14 +02:00
a002e75725 libc: Add strstr() 2022-10-15 12:33:36 +02:00
3fde7e46f5 libc: Add strcmp() and strncmp() 2022-10-15 12:30:49 +02:00
3e2a4276e9 libc: Add memcmp() and memmove()
Those were there since forever in the kernel, but they haven't been added to libc until now.
2022-10-15 12:23:37 +02:00
94a6336e4d libc: add memchr(), strnlen(), strdup(), and rename memclr() to bzero() 2022-10-15 12:18:37 +02:00
523e88e5a9 libc: Add sched_yield() 2022-10-15 11:43:13 +02:00
b0e071e964 libc: Make functions with no arguments be defined as type function(void)
Instead of type function().
2022-10-15 11:39:13 +02:00
3e2bebf0aa libc: Alias __lc_unreachable to __builtin_unreachable 2022-10-15 11:20:20 +02:00
1e86acd4c0 libc: Implement fcntl(F_DUPFD) and dup() 2022-10-15 11:16:34 +02:00
c77e752a82 libc: Implement fileno() 2022-10-15 10:28:52 +02:00
d0d6557e99 libc: Add assert() 2022-10-15 10:05:48 +02:00
8398b2e2e4 libc: Change bits/macros.h to use a __lc_ prefix for internal macros
That way, we don't pollute user programs with our own 'noreturn' and 'deprecated' macros
2022-10-15 09:52:37 +02:00
1043b0772d Make libc exit with a specific code if program initialization fails
Now you know, if a program exits with code -127 it's libc's fault :)
2022-10-14 21:26:46 +02:00
d5bc87099f libc: #define STDOUT_FILENO and STDERR_FILENO
Still missing stdin >.<
2022-10-14 21:24:18 +02:00
eb67ab113e libc: Add ctype.h 2022-10-14 21:12:26 +02:00
ccf8f404a8 libc: Make the stdio initialization code cleaner 2022-10-14 19:36:20 +02:00
4e08c9d8ce libc: Pass the last argument in __luna_syscall5 correctly 2022-10-14 19:24:58 +02:00
0e64c57e10 libc: Change __{stderr, stdout} to {stderr, stdout} 2022-10-14 19:23:14 +02:00
3b83d7ccaf libc: Implement fsetpos() and fgetpos()
Not much to do, since these are kind of equivalent to fseek() and ftell().
2022-10-14 19:12:40 +02:00