summaryrefslogtreecommitdiff
path: root/src/kernel
AgeCommit message (Collapse)Author
2024-07-14kernel/request: remove outdated comment in VfsReqdzwdz
2024-07-14kernel/malloc: clean up the code a little bitdzwdz
The bitmap functions now accept page addresses so I don't have to handle raw bitmap indexes, which was kinda complex. kmalloc_sanity is now not visible to other code as it wasn't really that useful in the first place.
2024-07-13kernel/malloc: limit the maximum allocation size to under a pagedzwdz
This will likely be changed back, but for the time being it will let me implement a better allocator without too much effort.
2024-07-12kernel: don't reuse VfsReq allocations for a single processdzwdz
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-11kernel: start cleaning up VfsRequestdzwdz
* I'm being more strict about the linked list state to hopefully ensure I'm not leaking any references. * vfsreq_create was renamed to vfsreq_dispatchcopy as that name feels more clear. It copies its argument, and dispatches it. * Requests for user backends are now handled more like requests for kernel backends - there's an accept() function that accepts a request.
2024-07-07kernel/vfs: split vfs_backend_refdown into two functionsdzwdz
2024-05-19kernel: implement /dev/bintimedzwdz
2024-05-11kernel: DUP_RDONLY and DUP_WRONLYdzwdz
I probably should've tested DUP_WRONLY too, now that I think about it. TODO?
2024-05-11kernel: remove HANDLE_NULLFSdzwdz
It was a dumb hack that wasn't even necessary - an error when mounting should shadow over the mountpoint anyways.
2024-05-11kernel: fix null dereference when delegating an nonexistent handledzwdz
2024-05-11kernel: refactor handle management out of proc.cdzwdz
2024-05-05net: expose the rtl mac to userland, make the netstack use itdzwdz
2024-05-04kernel/rtl8139: prepare for /dev/eth/macdzwdz
2024-03-13kernel/malloc: slight rework (it's still bad), store more metadatadzwdz
2024-03-13kernel/amd64: print debugging info on NMIdzwdz
the vm isn't getting an NMI for any real reason anyways, so I might as well abuse it
2024-02-23kernel: knock off some simple vfsreq TODOsdzwdz
2024-02-23kernel: fix _sys_fs_wait in initdzwdz
2024-02-21kernel: integrate the proc_ns_next fixes into proc_nextdzwdz
2023-12-25kernel: _sys_getnull() (basically /dev/null)dzwdz
2023-09-29kernel: fix linked list iteration in postqueuedzwdz
2023-09-29*: properly remove _sys_filicidedzwdz
not sure how that slipped by
2023-09-25kernel/procfs: `intrdown` node for sending an interrupt to all childrendzwdz
2023-09-25kernel: remove _sys_filicide (made redundant by _sys_intr)dzwdz
2023-09-25kernel/intr: accept a message, allow killing processes via intrsdzwdz
2023-09-24kernel: delay removing processes from treedzwdz
2023-09-19kernel: use HPET timer for sleepsdzwdz
not strictly necessary, but this should improve: 1. sleep performance 2. power efficiency when idle
2023-09-18kernel: implement _sys_time()dzwdz
After some consideration this seems like the most fitting way to handle timekeeping. Directly, the syscall is only useful for keeping time within a single process, but it is meant to be used for e.g. NTP clients, which will provide the real time through the VFS.
2023-09-17kernel/proc: inline proc_switch into proc_switch_anydzwdz
2023-09-17kernel/amd64: add HPET support, slightly rework time handlingdzwdz
2023-09-15kern: fix GDT order for 64bit sysretdzwdz
2023-09-13cmd/init: remove /initctl, use intr insteaddzwdz
2023-09-11*: rename /kdev/ to /dev/dzwdz
2023-09-09kernel: gracefully handle no serial portdzwdz
2023-09-09kernel: build /kdev/ on the flydzwdz
2023-09-07kernel: slightly refactor the page allocatordzwdz
2023-09-06boot: compress the init moduledzwdz
2023-09-06kernel: fix panic with large initrddzwdz
2023-09-03misc: remove old debug printsdzwdz
the rtl8139 mac wasn't being read correctly anyways, and the init stuff wasn't revelant in ages. the rest is relatively useful
2023-09-03build: -Osdzwdz
2023-08-31kernel: add _sys_getprocfs in place of HANDLE_PROCFSdzwdz
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-30style: get rid of eprintfdzwdz
2023-08-29kernel: remove _sys_await, emulate it in libcdzwdz
2023-08-27ports: qbe, cproc :^)dzwdz
2023-08-14reorganization: first stepsdzwdz
2023-08-13kern: undo accidentally commited debug codedzwdz
2023-08-06kernel: put every driver in /kdev/dzwdz
there's no real reason for bootstrap to be doing that, and this brings it closer to only doing the elf loading
2023-06-17kernel: fix procfs overflow bug, add safeguard to prevent similar onesdzwdz
2023-06-11kernel: replace await with wait2, roughly compatible with POSIXdzwdz
dash works now :^)))
2023-06-10kernel: implement DUP_SEARCH (like unix's F_DUPFD)dzwdz
2023-06-10kernel: implement getpid, getppiddzwdz