Age | Commit message (Collapse) | Author | |
---|---|---|---|
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-08-03 | shared: clean up printf, %u support (amongst other things) | dzwdz | |
2022-08-01 | amd64: remove the VGA text mode driver | dzwdz | |
2022-08-01 | amd64: /video/b device, provided by grub | dzwdz | |
2022-07-29 | syscall/write: WRITE_TRUNCATE | dzwdz | |
2022-07-29 | syscall: up the max argument count to 5; make write accept flags | dzwdz | |
2022-07-29 | use a shared fs_normslice() function to handle offsets | dzwdz | |
2022-07-27 | kernel/vfs: fix assert failure when creating a vfsreq to a dead mount | dzwdz | |
2022-07-26 | shared: move some headers from shared/ to camellia/ | dzwdz | |
2022-07-26 | tools: add tools/sort_includes.rb | dzwdz | |
2022-07-25 | kernel: cleaner and more compact stacktraces | dzwdz | |
2022-07-23 | kernel: switch processes after execbuf_syscall | dzwdz | |
2022-07-23 | init: compile as an elf | dzwdz | |
2022-07-21 | fix type-related compiler warnings | dzwdz | |
2022-07-20 | user/elf: free memory not belonging to the elf when jumping to it | dzwdz | |
2022-07-20 | syscall/execbuf: EXECBUF_JMP | 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-17 | amd64: ensure all addresses are canonical | dzwdz | |
2022-07-17 | kernel/virt_cpy: error struct, better error handling | dzwdz | |
2022-07-17 | amd64: remove dead code, combine shared code | dzwdz | |
2022-07-16 | amd64: all tests pass | dzwdz | |
2022-07-16 | amd64: back at the shell! | dzwdz | |
2022-07-16 | amd64: init can print to the terminal now | dzwdz | |
2022-07-16 | amd64: seemingly working syscalls (SYSCALL/SYSRET) | dzwdz | |
2022-07-16 | amd64: just enough paging support to map init | dzwdz | |
2022-07-16 | amd64: barely boot into kernel code | dzwdz | |
2022-07-15 | i686: stop using pushal/popal in sysenter/sysexit | dzwdz | |
2022-07-15 | i386/isr: don't use pushal; push registers manually | dzwdz | |
2022-07-14 | kernel/driver/serial: allow writes even with pending reads | dzwdz | |
2022-07-12 | remove the incorrect OPEN_CREATE guards in fs drivers | dzwdz | |
2022-07-10 | syscalls: implement dup | dzwdz | |
2022-07-10 | kernel: implement killing processes stuck on pipes | dzwdz | |
2022-07-09 | kernel/pipes: process queueing | dzwdz | |
2022-07-09 | syscalls/pipe: turn into a POSIX-style api with separate rw ends | dzwdz | |
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-08 | kernel/proc: remove the type argument from process_handle_get | dzwdz | |
2022-07-08 | kernel/syscalls: fix the SYSCALL_RETURN macro for returning pointers | dzwdz | |
2022-07-08 | kernel/fsroot: use req_preprocess to calculate offsets everywhere | dzwdz | |
2022-07-08 | syscall/fs_respond: get the file id from the buf argument | dzwdz | |
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-07 | kernel: add the vfsreq_finish_short shorthand function | dzwdz | |
2022-07-07 | kernel/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-07 | shared: add a flags argument to _syscall_fs_respond | dzwdz | |
2022-07-06 | kernel: don't panic on nonexistent syscalls | dzwdz | |
2022-07-06 | kernel/pipes: read & write support | dzwdz | |
2022-07-05 | kernel: initial partial pipe support | dzwdz | |
2022-07-01 | kernel/fsroot: respect offset when reading root | dzwdz | |
2022-07-01 | kernel: disable klog | dzwdz | |
2022-07-01 | kernel: add the debug_klog syscall for tracking down process ids | dzwdz | |
2022-06-30 | kernel: get lint to shut up about undeclared variables | dzwdz | |
2022-06-30 | kernel/linker: rename .text.early to .shared | dzwdz | |
It's not really just a text section, as it's writeable too. Makes gcc shut up about invalid section attributes. | |||
2022-06-29 | kernel/vfs: add the OPEN_CREATE flag | dzwdz | |