Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-09-12 | force init's main to be in .text.startup | dzwdz | |
for some reason it's only there by default if you compile with `-O2`. because of this, you couldn't compile camellia with `-O1` | |||
2021-09-12 | init: allocate bss at runtime | dzwdz | |
2021-09-12 | barebones `memflag()` implementation - letting the user allocate pages | dzwdz | |
2021-09-12 | remove some useless code from init | dzwdz | |
2021-09-12 | implement most of fs_wait | dzwdz | |
awaited_req is a garbage name but i couldn't come up with a better one. i also have no idea how to handle all the failure states | |||
2021-09-11 | replace `user_ptr` with a linux-style `__user` annotation | dzwdz | |
2021-09-09 | basic _syscall_fs_wait() impl, doesn't pass the req yet | dzwdz | |
2021-09-07 | reimplement _syscall_mount | dzwdz | |
2021-09-07 | implement fs_create(), front/back fs handles | dzwdz | |
2021-09-05 | error out when <*/types.h> isn't included in headers which need it | dzwdz | |
2021-09-05 | remove the fd_ / fs_ prefixes from syscall names | dzwdz | |
2021-09-04 | rename file descriptors to handles | dzwdz | |
2021-08-27 | make vfs_mount_resolve pass all the tests | dzwdz | |
2021-08-25 | reorganise init/main.c, add some "tests" | dzwdz | |
2021-08-25 | remove FD_STDOUT | dzwdz | |
init can just open `/tty` instead | |||
2021-08-25 | implement open() for FD_SPECIAL_TTY (`/tty`) | dzwdz | |
2021-08-25 | implement vfs_mount_seed, which creates the vfs passed to init | dzwdz | |
2021-08-25 | change the signature of _syscall_fd_mount | dzwdz | |
2021-08-24 | switch to using user_ptr for pointers coming from userland | dzwdz | |
this avoid accidental dereferences, and now it's easy to tell apart which pointers are safe to directly read and which aren't. cons: - const is completely discarded | |||
2021-08-24 | replace () with (void) in function definitions | dzwdz | |
`()` means that any amt of arguments will be accepted, which isn't what i want | |||
2021-08-24 | move syscalls.h to shared/syscalls.h | dzwdz | |
2021-08-24 | remove _syscall_debug_log, as it's not needed anymore | dzwdz | |
2021-08-24 | implement FD_SPECIAL_TTY, an stdout equalivent | dzwdz | |
2021-08-24 | add some scaffolding for file descriptors | dzwdz | |
2021-08-22 | fs_open() accepts a signed length, fixes an infinite loop | dzwdz | |
it occureed if the path_simplify returned a negative value - instead of being interpreter as an error it just carried on, ending up in an infinite loop. | |||
2021-08-22 | basic mount resolving | dzwdz | |
2021-08-22 | fs_open() stub | dzwdz | |
2021-08-22 | fix almost all compiler warnings | dzwdz | |
2021-08-22 | fix typo in _syscall_await definition | dzwdz | |
2021-08-22 | await() 2: pass the exit message | dzwdz | |
2021-08-18 | await() 1: wait for child to die, without message passing | dzwdz | |
The length is a int, because the syscall will have a signed output. A negative return value will mean an error (such as when it gets called by a childless process). | |||
2021-08-18 | fork() now has a return value; you can tell the child and parent apart | dzwdz | |
2021-08-18 | store the processes as a tree instead of a list | dzwdz | |
I'm about to need that for waits(). There's no single list of processes for simplicity's sake, but the search will now be even slower and it might even introduce a potential vuln! How fun! Someone could override stuff in .bss with random values. I'll either make gcc check if it hasn't gone past the end of the stack, or turn this into a non recursive function. | |||
2021-08-14 | init: add multipageify(), so i can test virt_iter in an simpler way | dzwdz | |
2021-08-12 | init: preserve registers in _syscall() | dzwdz | |
2021-08-11 | read _syscall_debuglog arguments across page boundaries | dzwdz | |
2021-07-31 | change the syscall naming convention; same one in kernel and userland | dzwdz | |
2021-07-26 | exit() now switches to the first running process | dzwdz | |
i used a linked list because it's the simplest way to implement this | |||
2021-07-26 | fork() pt 1: cloning process memory | dzwdz | |
2021-07-24 | fix some warnings | dzwdz | |
2021-07-23 | add a barebones exit() syscall | dzwdz | |
2021-07-22 | don't map the VGA console buffer in user processes | dzwdz | |
2021-07-22 | implement the debuglog() syscall | dzwdz | |
2021-07-21 | syscall parameter & return value passing | dzwdz | |
Sadly, sysenter on i386 limits me to only 4 arguments (so, 1 for the syscall id + 3 real args). If that turns out to be an issue I'll either just switch to interrupts, or switch to x64. | |||
2021-07-21 | barebones syscall | dzwdz | |
2021-07-20 | per-process virtual memory | dzwdz | |
VGA is only mapped into the virtual memory because there are no other ways of interacting with the OS. | |||
2021-07-18 | basic executable loading | dzwdz | |