Commit Graph

95 Commits

Author SHA1 Message Date
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
743aedcd49 libc: Implement atexit() and _exit()
exit() now calls registered handlers before calling _exit().

And initialize_libc() can now register a handler to close stdout and stderr on program termination!! :)
2022-10-12 20:41:55 +02:00
be9026442e libc: Check for file descriptors 0 and 1, and if they exist do not close and reopen them 2022-10-12 20:19:45 +02:00
de6041fede libc: Add fdopen() 2022-10-12 20:19:13 +02:00
5f8376409d Kernel, libc: Implement EFAULT 2022-10-12 19:25:35 +02:00
4091799701 Kernel, libc: Add ENOEXEC (Exec format error) 2022-10-12 19:15:44 +02:00
531afc3d6f libc: Add support for the new exec() system call
execv() is a temporary wrapper that ignores the second parameter, while execve() and execvp() still error out.
2022-10-12 17:45:58 +02:00
34c35163e4 libc: use the normal names that everybody uses for stdout and stderr 2022-10-12 17:15:57 +02:00
dfdc3b2d11 libc: close fds 0 and 1 before opening stdout and stderr 2022-10-12 17:14:49 +02:00
edda41a7bb libc: Implement fseek(), ftell() and rewind()
All three use the new syscall seek() (with its lseek() wrapper in unistd.h)!!
2022-10-12 15:56:03 +02:00
4a5db1dca7 libc: Add lseek() 2022-10-12 15:37:29 +02:00
928ade123c libc: Add support for the new seek() system call 2022-10-12 15:32:09 +02:00
e40304f2f1 libc: Add off_t to sys/types.h 2022-10-12 15:30:41 +02:00
e90b90c556 Kernel, libc: Round up to nearest page-aligned size instead of down 2022-10-12 12:15:12 +02:00
d89685bb36 libc: Document sys/types.h 2022-10-12 12:07:42 +02:00
1e16a78106 libc: Document functions in sys/mman.h 2022-10-12 12:06:45 +02:00
a3362429d3 libc: Update strerror() 2022-10-12 12:01:18 +02:00
0d3e7d4463 libc: Document errno.h 2022-10-12 12:01:07 +02:00
b42c866db8 Correct description for fopen() 2022-10-12 11:58:07 +02:00
9f5b3b76d2 libc: Document the function in fcntl.h 2022-10-12 11:57:49 +02:00
f44411aa46 libc: Document the functions in luna.h 2022-10-12 11:54:29 +02:00
6aabe19fb4 libc: Document the functions in stdio.h 2022-10-12 11:51:32 +02:00
ffc223c2cf libc: Document functions in stdlib.h
Also, add prototypes for calloc() and realloc(), which were already implemented but not in the header.
2022-10-12 11:30:21 +02:00
c8c4d31cca Add a FIXME to string.cpp 2022-10-12 11:20:48 +02:00
19ee20b6f5 libc: Document the functions in string.h 2022-10-12 11:19:14 +02:00
38e87d8f8f libc: Document the functions in unistd.h 2022-10-12 11:02:18 +02:00
44834b8a0f libc: Implement fputs, fputc, putc and putchar 2022-10-12 10:05:14 +02:00
d3ac590e24 Kernel: Remove the sys_getversion() syscall
User programs can now acquire this information by reading /dev/version.
2022-10-11 21:31:28 +02:00
c30041b733 fix naming 2022-10-11 21:17:07 +02:00
88a01fcfc7 libc: make perror output to stderr 2022-10-11 21:13:38 +02:00