summaryrefslogtreecommitdiff
path: root/src/kernel
AgeCommit message (Collapse)Author
2022-07-14kernel/driver/serial: allow writes even with pending readsdzwdz
2022-07-12remove the incorrect OPEN_CREATE guards in fs driversdzwdz
2022-07-10syscalls: implement dupdzwdz
2022-07-10kernel: implement killing processes stuck on pipesdzwdz
2022-07-09kernel/pipes: process queueingdzwdz
2022-07-09syscalls/pipe: turn into a POSIX-style api with separate rw endsdzwdz
Without separate read/write ends you can't tell when there are no more writers left if you have multiple readers. Consider this piece of code: int fd = pipe(); fork(); // execution continues in 2 processes while (read(fd, &some_buf, sizeof somebuf) >= 0) { ... } Once both processes call `read()`, it's obvious that no writes are possible - all the processes that hold a reference to the pipe are currently stuck on a `read()` call, so the kernel could just make it return an error in both. But, what then? It's still possible to write to the pipe, and you can't know if the other process will do that. Thus, if you don't want to miss any output, you have to keep reading the pipe. Forever. Both processes end up stuck. Having separate read/write ends prevents that.
2022-07-08kernel/proc: remove the type argument from process_handle_getdzwdz
2022-07-08kernel/syscalls: fix the SYSCALL_RETURN macro for returning pointersdzwdz
2022-07-08kernel/fsroot: use req_preprocess to calculate offsets everywheredzwdz
2022-07-08syscall/fs_respond: get the file id from the buf argumentdzwdz
Previously, file ids could only be positive integers, so their range was 31 bits - not enough to represent the entire memory. Now, pointers can be safely used as file ids.
2022-07-07kernel: add the vfsreq_finish_short shorthand functiondzwdz
2022-07-07kernel/vfs: delegate support in _syscall_fs_respond!dzwdz
this is big in terms of speed, it avoids a lot of unnecessary context switches
2022-07-07shared: add a flags argument to _syscall_fs_responddzwdz
2022-07-06kernel: don't panic on nonexistent syscallsdzwdz
2022-07-06kernel/pipes: read & write supportdzwdz
2022-07-05kernel: initial partial pipe supportdzwdz
2022-07-01kernel/fsroot: respect offset when reading rootdzwdz
2022-07-01kernel: disable klogdzwdz
2022-07-01kernel: add the debug_klog syscall for tracking down process idsdzwdz
2022-06-30kernel: get lint to shut up about undeclared variablesdzwdz
2022-06-30kernel/linker: rename .text.early to .shareddzwdz
It's not really just a text section, as it's writeable too. Makes gcc shut up about invalid section attributes.
2022-06-29kernel/vfs: add the OPEN_CREATE flagdzwdz
2022-05-29kernel: fix overlapping interrupt / regular stacksdzwdz
2022-05-26kernel/style: don't return pointless values in _syscalldzwdz
2022-05-26syscalls/memflag: FINDFREE flagdzwdz
2022-05-21kernel/i386: only map what's absolutely necessary in the userdzwdz
2022-05-21syscall/memflag: zero out allocated pages to prevent leaksdzwdz
2022-05-21syscall/memflag: implement freeing memorydzwdz
2022-05-21kernel/pagedir: explicitly mark the pagedir user/write fields as unuseddzwdz
2022-05-15shared/ring: ring_contigdzwdz
2022-05-15syscall/await: ensure the children are reapable before hangingdzwdz
2022-05-15kernel/syscall: ensure SYSCALL_RETURN value is useddzwdz
2022-05-15kernel/mem: remove virt_cpy2kmallocdzwdz
2022-05-06kernel: remove the union in `struct handle`dzwdz
2022-05-06kernel/proc: fork: be explicit about copying fieldsdzwdz
2022-05-06syscalls: merge fork() and fs_fork2()dzwdz
2022-05-06kernel/proc: reorganize the functionsdzwdz
2022-05-06kernel/proc: move shutdown() to process_killdzwdz
2022-05-06kernel/proc: simplify `process_free()`dzwdz
2022-05-06kernel/proc: get rid of the PS_DEADER state, free processes asapdzwdz
2022-05-05kernel/driver: clean up the ps2/serial driversdzwdz
2022-05-05kernel: fix a few minor compiler warningsdzwdz
2022-05-05kernel: move fsroot to kernel/arch/i386dzwdz
2022-05-05kernel: each driver registers its own mountsdzwdz
2022-05-05kernel: syscalls now have to explicitly save the return valuedzwdz
thus they can opt out of doing that so the calls which might return immediately but can return later don't have to both regs_savereturn and return to the caller. and because of that, the return values of a lot of VFS things have just got way saner
2022-05-05kernel/proc: remove WAITS4IRQdzwdz
2022-05-05kernel: move the COM1 driver to a separate handlerdzwdz
2022-05-05kernel: ps2 driver is now a separate backenddzwdz
2022-05-05kernel/vfs: refactor vfs_backend to allow multiple kernel backendsdzwdz
2022-05-05kernel/vfs: rename the vfsreq funcs, merge vfsreq_finish & vfsreq_canceldzwdz