summaryrefslogtreecommitdiff
path: root/src/kernel/syscalls.c
AgeCommit message (Collapse)Author
2023-08-31kernel: add _sys_getprocfs in place of HANDLE_PROCFSdzwdz
This makes the side-effects more explicit, and feels less hacky than `HANDLE_PROCFS`. I don't think accessing a handle alone should have side-effects, even if it's a "special" one.
2023-08-29kernel: remove _sys_await, emulate it in libcdzwdz
2023-08-27ports: qbe, cproc :^)dzwdz
2023-06-17kernel: fix procfs overflow bug, add safeguard to prevent similar onesdzwdz
2023-06-11kernel: replace await with wait2, roughly compatible with POSIXdzwdz
dash works now :^)))
2023-06-10kernel: implement DUP_SEARCH (like unix's F_DUPFD)dzwdz
2023-06-10kernel: implement getpid, getppiddzwdz
2023-06-04kernel: rework /proc/ and process IDsdzwdz
I'm yet to write proper docs but the TL;DR is: Mounting /proc/ creates a new pid namespace. You're still visible in the old namespace with your old pid, but your children won't be. You see your own pid as 1. Current pids of children will be preserved, pids will be allocated starting from the highest one of your children.
2023-02-23toolchain: update, move to a Camellia-specific toolchaindzwdz
2023-01-25kernel: move /mem/alloc to /malloc and linker.ld to arch/amd64/dzwdz
2023-01-25kernel: consolidate some header filesdzwdz
2023-01-25style: typedef structs, shorter namespacesdzwdz
I've wanted to do this for a while, and since I've just had a relatively large refactor commit (pcpy), this is as good of a time as any. Typedefing structs was mostly inspired by Plan 9's coding style. It makes some lines of code much shorter at basically no expense. Everything related to userland kept old-style struct definitions, so as not to force that style onto other people. I also considered changing SCREAMING_ENUM_FIELDS to NicerLookingCamelcase, but I didn't, just in case that'd be confusing.
2023-01-25kernel/virt: replace the virt_cpy api with a more foolproof onedzwdz
2023-01-19kernel: user interruptsdzwdz
2023-01-11kernel: return EPIPE when fs_waiting on a dead filesystemdzwdz
2023-01-08kernel: let parents kill their children againdzwdz
2023-01-08kernel/proc: don't kill children when parent diesdzwdz
2023-01-06kernel: basic procfsdzwdz
2023-01-06kernel: turn the NULLFS into an always present special handledzwdz
preparing for HANDLE_PROCFS
2022-10-08kernel/handle: reuse ->writeable/->readable for pipesdzwdz
2022-10-08syscall/open: don't check for free handlesdzwdz
doesn't really prevent anything, and makes it harder to test edge cases
2022-10-08tests: some tests for when a process has no free handlesdzwdz
2022-10-02syscall/open: add the full suite of READ/WRITE flagsdzwdz
2022-09-20shared: rename ufs_request to better fit its role in userlanddzwdz
The old name could have suggested that it held a response to a request received by fs_wait. The new name is unfortunately very similar to the `struct vfs_request` already used internally in the kernel, but it's better at conveying that it contains a filesystem request yet to be handled. vfs_request - virtual filesystem request (a bad name in hindsight) ufs_request - user filesystem request
2022-09-02kernel/proc: introduce child ids for telling children apartdzwdz
2022-08-30set up the stack in user/bootstrap instead of the kerneldzwdz
2022-08-28kernel/vfs: minor vfs_request / vfs_root_register reworkdzwdz
* changed vfs_root_register's name because the _mount didn't add anything * removed the old pointless vfs_backend_tryaccept calls from drivers * because of that, i could remove the vfs_backend globals * replaced the horrible BACKEND_KERN macro * all vfs_backends are now stored on the heap
2022-08-28shared/path_simplify: return an unsigned valuedzwdz
2022-08-22syscalls/fs_respond: make the *buf argument constdzwdz
2022-08-19syscall/fs_wait: return a handle for each requestdzwdz
2022-08-19kernel: kzallocdzwdz
2022-08-19kernel/proc: abstract away managing handlesdzwdz
2022-08-12kernel/proc: don't expose internal fuctions, clean up apidzwdz
2022-08-12vfs: OPEN_RO flag, read-only whitelist entriesdzwdz
2022-08-11kernel/syscalls: merge a few syscalls into vfsop_simpledzwdz
Those had a lot of repeating code, but I'm not sure if this is the right change. Well, apart from making pipe_joinqueue more consistent.
2022-08-11kernel: reformat the _syscall dispatch function to a syscall/linedzwdz
2022-08-11vfs: support for removing filesdzwdz
2022-08-08user: separate tmpfs into its own executable, add `mount`dzwdz
2022-08-05add _syscall_getsizedzwdz
2022-08-05move path_simplify to shared code, move its tests to userlanddzwdz
2022-08-04do some simple TODOs, organize the rest; general code maintainancedzwdz
2022-08-04syscalls: add _syscall_sleep()dzwdz
2022-07-29syscall/write: WRITE_TRUNCATEdzwdz
2022-07-29syscall: up the max argument count to 5; make write accept flagsdzwdz
2022-07-26shared: move some headers from shared/ to camellia/dzwdz
2022-07-20user/elf: free memory not belonging to the elf when jumping to itdzwdz
2022-07-18syscalls: implement execbufdzwdz
i have been planning to implement something like this for a while now. it should be faster when doing consecutive syscalls (to be tested). it will also be helpful in writing the elf loader
2022-07-17kernel/virt_cpy: error struct, better error handlingdzwdz
2022-07-16amd64: back at the shell!dzwdz
2022-07-16amd64: init can print to the terminal nowdzwdz