Age | Commit message (Collapse) | Author | |
---|---|---|---|
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 | |
2022-04-12 | kernel: make all sizes unsigned, sort out the sign mess | dzwdz | |
2022-04-10 | kernel: idle process | dzwdz | |
2022-04-10 | kernel: process_find_multiple | dzwdz | |
2022-04-07 | kernel/vfs: implement a vfs request queue | dzwdz | |
2021-11-02 | fork2 refactor: every process now has (only) a single controlled vfs_backend | dzwdz | |
2021-10-04 | implement process_kill() | dzwdz | |
2021-10-04 | remove support for processes returning strings on exit | dzwdz | |
This isn't really all that useful, it doesn't enable anything that wasn't possible before. With it removed I'll be able to implement process_exit() in a much simpler way. | |||
2021-09-21 | refactor `await_finish` into `process_try2collect` | dzwdz | |
the new name is terrible, but at least the function now has a clear purpose | |||
2021-09-20 | use a single struct for all fs_wait return values | dzwdz | |
2021-09-18 | remove `struct process.stack_top` - it was unused | dzwdz | |
2021-09-15 | fs_wait: pass the file ID too | dzwdz | |
2021-09-12 | implement part of `fs_respond` | 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-12 | vfs request refactor pt1 | dzwdz | |
2021-09-11 | replace `user_ptr` with a linux-style `__user` annotation | dzwdz | |
2021-09-08 | save the vfs_op_request in the process struct | dzwdz | |
2021-09-08 | process struct: replace the generic saved_addr with an union | dzwdz | |
2021-09-08 | scaffolding for user fs dispatch | dzwdz | |
2021-09-04 | refactor finding empty handles to a function | dzwdz | |
2021-09-04 | rename file descriptors to handles | 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 | add some scaffolding for file descriptors | dzwdz | |
2021-08-22 | basic mount resolving | dzwdz | |
2021-08-22 | process_switch_any: deduplicate some code | 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 | processes now store a PID for debugging purposes | dzwdz | |
2021-08-18 | fork(): store information about the parent too | dzwdz | |
2021-08-18 | rename process_clone to process_fork | 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-07-26 | rename process_new() to process_seed() | dzwdz | |
it's only meant to create the root process, the old name could've been misleading | |||
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-24 | save all registers on syscalls | 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-10 | separate the source code from object files; more modular Makefile | dzwdz | |