summaryrefslogtreecommitdiff
path: root/src/kernel/proc.h
AgeCommit message (Collapse)Author
2022-05-01kernel/proc: make handles separate refcounted objectsdzwdz
2022-04-28kernel/proc: reparent deathbedded processesdzwdz
dead processes now can't have alive children
2022-04-21kernel: consolidate `process_seed` and `run_init`dzwdz
2022-04-21kernel/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-21kernel/proc: only kill deathbedded processes on switch attemptdzwdz
this makes `process_transition` safe again, as it won't be able to free processes. it was a pretty unintuitive behaviour
2022-04-21kernel: recursive kill()dzwdz
2022-04-21kernel: `shutdown()`; temporarily print process states on shutdowndzwdz
2022-04-16kernel/vfs: store the queue in `vfs_request` itselfdzwdz
2022-04-14kernel/proc: only change state through `process_transition`dzwdz
2022-04-14kernel: store a pointer to the callback function in .waits4irqdzwdz
removes `proc.c`'s pointless dependency on `vfs/root.h`
2022-04-14kernel: basic page allocator, `process_free`dzwdz
2022-04-12kernel/proc: implement `process_next` for simple process iterationdzwdz
2022-04-12kernel: make all sizes unsigned, sort out the sign messdzwdz
2022-04-10kernel: idle processdzwdz
2022-04-10kernel: process_find_multipledzwdz
2022-04-07kernel/vfs: implement a vfs request queuedzwdz
2021-11-02fork2 refactor: every process now has (only) a single controlled vfs_backenddzwdz
2021-10-04implement process_kill()dzwdz
2021-10-04remove support for processes returning strings on exitdzwdz
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-21refactor `await_finish` into `process_try2collect`dzwdz
the new name is terrible, but at least the function now has a clear purpose
2021-09-20use a single struct for all fs_wait return valuesdzwdz
2021-09-18remove `struct process.stack_top` - it was unuseddzwdz
2021-09-15fs_wait: pass the file ID toodzwdz
2021-09-12implement part of `fs_respond`dzwdz
2021-09-12implement most of fs_waitdzwdz
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-12vfs request refactor pt1dzwdz
2021-09-11replace `user_ptr` with a linux-style `__user` annotationdzwdz
2021-09-08save the vfs_op_request in the process structdzwdz
2021-09-08process struct: replace the generic saved_addr with an uniondzwdz
2021-09-08scaffolding for user fs dispatchdzwdz
2021-09-04refactor finding empty handles to a functiondzwdz
2021-09-04rename file descriptors to handlesdzwdz
2021-08-24switch to using user_ptr for pointers coming from userlanddzwdz
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-24replace () with (void) in function definitionsdzwdz
`()` means that any amt of arguments will be accepted, which isn't what i want
2021-08-24add some scaffolding for file descriptorsdzwdz
2021-08-22basic mount resolvingdzwdz
2021-08-22process_switch_any: deduplicate some codedzwdz
2021-08-22await() 2: pass the exit messagedzwdz
2021-08-18await() 1: wait for child to die, without message passingdzwdz
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-18processes now store a PID for debugging purposesdzwdz
2021-08-18fork(): store information about the parent toodzwdz
2021-08-18rename process_clone to process_forkdzwdz
2021-08-18store the processes as a tree instead of a listdzwdz
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-26rename process_new() to process_seed()dzwdz
it's only meant to create the root process, the old name could've been misleading
2021-07-26exit() now switches to the first running processdzwdz
i used a linked list because it's the simplest way to implement this
2021-07-26fork() pt 1: cloning process memorydzwdz
2021-07-24fix some warningsdzwdz
2021-07-24save all registers on syscallsdzwdz
2021-07-20per-process virtual memorydzwdz
VGA is only mapped into the virtual memory because there are no other ways of interacting with the OS.
2021-07-10separate the source code from object files; more modular Makefiledzwdz