Commit Graph

410 Commits

Author SHA1 Message Date
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
36bb1cab5c FileDescriptor: add operator=() so that the fcntl(F_DUPFD syscall compiles :) 2022-10-15 11:16:18 +02:00
5c61252061 Kernel: Add a new fcntl() system call 2022-10-15 10:56:06 +02:00
3eb1bff2e9 Task: add an alloc_fd() function 2022-10-15 10:45:12 +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
91d76a2ee4 Devices: Add a new RandomDevice :)
This new device uses the seeded Mersenne PRNG we use in the kernel.
This device is not meant for regular userspace use, but more for userspace to seed their own PRNGs from.

If the DeviceFS is mounted at /dev, this device can be found at /dev/random.
2022-10-14 20:14:49 +02:00
faaf930a14 Moon 0.12-dev 2022-10-14 19:55:29 +02:00
97461c7c1f Prepare for moon 0.11 2022-10-14 19:49:52 +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
e0aa552fae Kernel: Add a move() function
The standard C++ move() function.
2022-10-14 19:04:56 +02:00
f82fbbe60c Make address spaces not cloned by default 2022-10-14 18:23:04 +02:00
c8a92af4d2 Whoops! bugfix 2022-10-14 18:21:09 +02:00
e11280ad3f Merge branch 'address-spaces' 2022-10-14 18:20:42 +02:00
1c3377fc98 Prepare for cloning address spaces, not there yet 2022-10-14 18:17:57 +02:00
e43777bd31 Apparently, it just works now. 2022-10-14 18:00:33 +02:00
97a8a4a4a2 Solve rebase 2022-10-14 17:39:24 +02:00
81f56083c5 Almost there! 2022-10-14 17:38:29 +02:00
cdb73836b0 Some more multiple address space stuff
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-14 17:37:51 +02:00
bb7887a29d Add basic address space infrastructure 2022-10-14 17:34:29 +02:00
177282d79c Use the more appropriate size_t 2022-10-14 17:33:06 +02:00
5abd8814e3 Kernel: Continue moving utilities to a separate subdirectory 2022-10-14 17:33:06 +02:00
e21b608af4 Utilities: Start moving utilities into specific headers in a utils/ subdirectory 2022-10-14 17:31:47 +02:00
4f13be7741 Use the more appropriate size_t 2022-10-14 17:27:35 +02:00
1707739477 Kernel: Continue moving utilities to a separate subdirectory 2022-10-14 17:26:47 +02:00
13a5c0e445 Utilities: Start moving utilities into specific headers in a utils/ subdirectory 2022-10-14 17:21:16 +02:00
9b3c7816a3 Scheduler: pop the interrupt state when returning early from load_user_task() 2022-10-14 16:54:52 +02:00
26211bd49f It (almost) works now
The only thing doing weird stuff is exec(), so that's commented out and throws ENOSYS right now.

But we have two user tasks running in parallel, isolated from each other!
2022-10-14 16:46:00 +02:00
0c7c249935 exec is still doing some weird stuff, totally corrupting the page tables 2022-10-13 22:20:24 +02:00
5d41b4b113 Almost there...
exec() is not working yet. But the rest are!!
2022-10-13 22:13:04 +02:00
24272c57ef Almost there! 2022-10-13 21:55:51 +02:00
50d52c9a6b Scheduler: pop the interrupt state when returning early from load_user_task() 2022-10-13 21:23:51 +02:00
83982a24e2 add a comment 2022-10-13 21:21:02 +02:00
ee712432bd Some more multiple address space stuff
This page-faults. This is because the memory where the ELF should be is all zeroes, which the CPU tries to interpret.
2022-10-13 21:14:39 +02:00
229b06c63b Add basic address space infrastructure 2022-10-13 19:19:51 +02:00
522aa2f812 mmap, munmap: Add more checks 2022-10-13 18:50:12 +02:00
83e6b8cd21 VMM: Fix naming convention 2022-10-13 18:42:53 +02:00
57482e4e93 VMM: Make it even nicer 2022-10-13 18:15:52 +02:00
b360307f41 VMM: Make it so much gooder
There are still some fixes to be made, but I think this is already way cleaner than before.
2022-10-13 17:58:13 +02:00