Age | Commit message (Collapse) | Author | |
---|---|---|---|
2024-07-25 | kernel: pass more information to user on interrupt | dzwdz | |
This is meant to facilitate a syscall for returning from interrupts, which will actually work in the general case as opposed to the current hack, which only works if the interrupt occured during a syscall (which is correct... for now). | |||
2024-07-22 | kernel: explicitly store process RIP and RFLAGS | dzwdz | |
Once again, needed for the interrupt return syscall. Seems to have made the kernel slower in timebench? | |||
2024-07-17 | kernel: make kmalloc accept a numeric "tag" instead of a freeform description | dzwdz | |
This will both let me save space in the allocation header, and make the debugprint more readable. | |||
2024-07-14 | kernel: make the adhoc VfsQueue queues use ReqQueue instead | dzwdz | |
I'm still not sure if I should use sys/queue.h for this. But yeah, this is more consistent, and it will also let me switch over to O(1) insertions later on. | |||
2024-07-12 | kernel: don't reuse VfsReq allocations for a single process | dzwdz | |
To use the same testing methodology as when I've introduced request slots: before: / $ iostress 1 1000000 0 > /dev/vtty run 0: 2585203 1000000 calls, 0 bytes. avg 2585203 after: / $ iostress 1 1000000 0 > /dev/vtty run 0: 2783171 1000000 calls, 0 bytes. avg 2783171 This is around a 7.7% slowdown - that I hope to fix with a better malloc. While this doesn't really make the code that much simpler, it doesn't feel like the right approach in the first place | |||
2024-07-07 | kernel/vfs: split vfs_backend_refdown into two functions | dzwdz | |
2024-05-11 | kernel: refactor handle management out of proc.c | dzwdz | |
2024-03-13 | kernel/malloc: slight rework (it's still bad), store more metadata | dzwdz | |
2024-02-21 | kernel: integrate the proc_ns_next fixes into proc_next | dzwdz | |
2023-09-25 | kernel/intr: accept a message, allow killing processes via intrs | dzwdz | |
2023-09-24 | kernel: delay removing processes from tree | dzwdz | |
2023-09-17 | kernel/proc: inline proc_switch into proc_switch_any | dzwdz | |
2023-09-15 | kern: fix GDT order for 64bit sysret | dzwdz | |
2023-09-13 | cmd/init: remove /initctl, use intr instead | dzwdz | |
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-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: move /mem/alloc to /malloc and linker.ld to arch/amd64/ | dzwdz | |
2023-01-25 | kernel: consolidate some header files | dzwdz | |
2023-01-25 | kernel: remove accidental executable bit on proc.c | dzwdz | |
how. | |||
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-25 | kernel/virt: replace the virt_cpy api with a more foolproof one | dzwdz | |
2023-01-24 | kernel/procfs: allow interrupting processes | dzwdz | |
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-11 | kernel: return EPIPE when fs_waiting on a dead filesystem | 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 | |
2023-01-06 | kernel: turn the NULLFS into an always present special handle | dzwdz | |
preparing for HANDLE_PROCFS | |||
2022-09-02 | kernel/proc: introduce child ids for telling children apart | dzwdz | |
2022-08-30 | set up the stack in user/bootstrap instead of the kernel | dzwdz | |
2022-08-28 | kernel/vfs: minor vfs_request / vfs_root_register rework | dzwdz | |
* changed vfs_root_register's name because the _mount didn't add anything * removed the old pointless vfs_backend_tryaccept calls from drivers * because of that, i could remove the vfs_backend globals * replaced the horrible BACKEND_KERN macro * all vfs_backends are now stored on the heap | |||
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: kzalloc | 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-06 | kernel/mem: make the page bitmap cover everything after bss | dzwdz | |
2022-08-04 | do some simple TODOs, organize the rest; general code maintainance | 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-17 | amd64: remove dead code, combine shared code | dzwdz | |