Age | Commit message (Collapse) | Author | |
---|---|---|---|
2023-08-31 | kernel: add _sys_getprocfs in place of HANDLE_PROCFS | dzwdz | |
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-29 | kernel: remove _sys_await, emulate it in libc | dzwdz | |
2023-08-27 | ports: qbe, cproc :^) | dzwdz | |
2023-06-11 | kernel: replace await with wait2, roughly compatible with POSIX | dzwdz | |
dash works now :^))) | |||
2023-06-10 | kernel: implement DUP_SEARCH (like unix's F_DUPFD) | dzwdz | |
2023-06-10 | kernel: implement getpid, getppid | dzwdz | |
2023-06-04 | kernel: rework /proc/ and process IDs | dzwdz | |
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-01-25 | kernel: consolidate some header files | dzwdz | |
2023-01-25 | style: typedef structs, shorter namespaces | dzwdz | |
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-19 | kernel: user interrupts | dzwdz | |
2023-01-19 | kernel: delay freeing reaped processes, slightly more strict states | dzwdz | |
2023-01-18 | kernel: add a root argument to process_next | dzwdz | |
2023-01-08 | kernel: let parents kill their children again | dzwdz | |
2023-01-08 | kernel/proc: don't kill children when parent dies | dzwdz | |
2023-01-06 | kernel: basic procfs | dzwdz | |
2022-09-20 | shared: rename ufs_request to better fit its role in userland | dzwdz | |
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-02 | kernel/proc: introduce child ids for telling children apart | dzwdz | |
2022-08-19 | syscall/fs_wait: return a handle for each request | dzwdz | |
2022-08-19 | syscall/fork: allow sharing handles between threads | dzwdz | |
2022-08-19 | kernel/proc: abstract away managing handles | dzwdz | |
2022-08-18 | syscall/fork: FORK_SHAREMEM for primitive "threads" | dzwdz | |
2022-08-12 | kernel/proc: don't expose internal fuctions, clean up api | dzwdz | |
2022-08-04 | syscalls: add _syscall_sleep() | dzwdz | |
2022-08-03 | kernel: reuse a single allocation for all vfs_requests of a process | dzwdz | |
$ iostress 32 512 0 > /vtty # before 512 calls, 0 bytes. avg 121133 $ iostress 32 512 0 > /vtty # after 512 calls, 0 bytes. avg 103540 103540/121133 = ~85% I think the tiny bit of added complexity is worth it here. | |||
2022-07-26 | shared: move some headers from shared/ to camellia/ | dzwdz | |
2022-07-18 | syscalls: implement execbuf | dzwdz | |
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-09 | kernel/pipes: process queueing | dzwdz | |
2022-07-08 | kernel/proc: remove the type argument from process_handle_get | dzwdz | |
2022-07-05 | kernel: initial partial pipe support | dzwdz | |
2022-05-06 | kernel/proc: reorganize the functions | dzwdz | |
2022-05-06 | kernel/proc: get rid of the PS_DEADER state, free processes asap | dzwdz | |
2022-05-05 | kernel/proc: remove WAITS4IRQ | dzwdz | |
2022-05-05 | kernel: ps2 driver is now a separate backend | dzwdz | |
2022-05-05 | kernel/proc: remove deathbedding | dzwdz | |
2022-05-02 | syscalls: fork() noreap flag | dzwdz | |
2022-05-02 | shared: fix some stuff i broke + compiler warnings | dzwdz | |
2022-05-02 | kernel/vfs: always separately allocate the request object | dzwdz | |
2022-05-01 | kernel/proc: `process_handle_get` for safely accepting handle ids | dzwdz | |
2022-05-01 | kernel/proc: make handles separate refcounted objects | dzwdz | |
2022-04-28 | kernel/proc: reparent deathbedded processes | dzwdz | |
dead processes now can't have alive children | |||
2022-04-21 | kernel: consolidate `process_seed` and `run_init` | dzwdz | |
2022-04-21 | kernel/proc: only expose `process_switch_any()` | dzwdz | |
other parts of the kernel don't need to care about which process exactly gets switched into | |||
2022-04-21 | kernel/proc: only kill deathbedded processes on switch attempt | dzwdz | |
this makes `process_transition` safe again, as it won't be able to free processes. it was a pretty unintuitive behaviour | |||
2022-04-21 | kernel: recursive kill() | dzwdz | |
2022-04-21 | kernel: `shutdown()`; temporarily print process states on shutdown | dzwdz | |
2022-04-16 | kernel/vfs: store the queue in `vfs_request` itself | dzwdz | |
2022-04-14 | kernel/proc: only change state through `process_transition` | dzwdz | |
2022-04-14 | kernel: store a pointer to the callback function in .waits4irq | dzwdz | |
removes `proc.c`'s pointless dependency on `vfs/root.h` | |||
2022-04-14 | kernel: basic page allocator, `process_free` | dzwdz | |
2022-04-12 | kernel/proc: implement `process_next` for simple process iteration | dzwdz | |