Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-04-12 | kernel/proc: implement `process_next` for simple process iteration | dzwdz | |
2022-04-11 | kernel: implement `cpu_pause()` in assembly, remove `irq_interrupt_flag()` | dzwdz | |
2022-04-11 | kernel/arch: only allow IRQs in the idle process | dzwdz | |
2022-04-11 | kernel: shutdown when init quits | dzwdz | |
thanks to this it's easier to power off - instead of waiting for all processses to quit (which now involves writing `quit` both on serial and ps/2), one of those can just somehow kill init. currently this is just done by exiting from any shell - init will return from await and exit too | |||
2022-04-10 | init/fs: handle delegated reads in a subprocess | dzwdz | |
first off: this is horrible. there's no CoW, so this is horribly slow. the sole purpose of this is to let the userland delegate handle multiple requests at once, because i'm implementing concurrent IO and I kinda need that. it's possible that handling of multiple requests could be handled in a better way - but this could be good enough once i implement CoW | |||
2022-04-10 | kernel: idle process | dzwdz | |
2022-04-10 | kernel: process_find_multiple | dzwdz | |
2022-04-09 | kernel: `vfs_request_accept` now doesn't switch processes | dzwdz | |
2021-11-14 | shared: use a single implementation of mem* functions everywhere | dzwdz | |
2021-11-02 | fork2 refactor: every process now has (only) a single controlled vfs_backend | dzwdz | |
2021-10-15 | kernel: quit QEMU once there are no running processes left | dzwdz | |
2021-10-04 | remove unused variables in process_try2collect | dzwdz | |
2021-10-04 | implement process_kill() | dzwdz | |
2021-10-04 | remove support for processes returning strings on exit | dzwdz | |
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-21 | start using sparse's `-Wdecl` | dzwdz | |
2021-09-21 | implement (safe) min/max macros | dzwdz | |
2021-09-21 | refactor `await_finish` into `process_try2collect` | dzwdz | |
the new name is terrible, but at least the function now has a clear purpose | |||
2021-09-20 | create a few specialized panic()s | dzwdz | |
thanks to this i can tell which ones are placeholders, and which ones should stay | |||
2021-09-19 | show the malloc balance on halt; remove a bad kfree() call | dzwdz | |
the kfree() call was freeing a buffer which was inside a process struct | |||
2021-09-18 | remove `struct process.stack_top` - it was unused | dzwdz | |
2021-09-12 | implement part of `fs_respond` | dzwdz | |
2021-09-11 | replace `user_ptr` with a linux-style `__user` annotation | dzwdz | |
2021-09-08 | style: simplify the `kmalloc(sizeof(...` calls | dzwdz | |
2021-09-05 | move most of the memory stuff to kernel/mem/ | dzwdz | |
2021-09-04 | refactor finding empty handles to a function | dzwdz | |
2021-09-04 | rename file descriptors to handles | dzwdz | |
2021-08-25 | remove FD_STDOUT | dzwdz | |
init can just open `/tty` instead | |||
2021-08-25 | implement vfs_mount_seed, which creates the vfs passed to init | dzwdz | |
2021-08-24 | switch to using user_ptr for pointers coming from userland | dzwdz | |
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-24 | replace () with (void) in function definitions | dzwdz | |
`()` means that any amt of arguments will be accepted, which isn't what i want | |||
2021-08-24 | implement FD_SPECIAL_TTY, an stdout equalivent | dzwdz | |
2021-08-24 | add some scaffolding for file descriptors | dzwdz | |
2021-08-22 | basic mount resolving | dzwdz | |
2021-08-22 | process_switch_any: deduplicate some code | dzwdz | |
2021-08-22 | fix almost all compiler warnings | dzwdz | |
2021-08-18 | processes now store a PID for debugging purposes | dzwdz | |
2021-08-18 | fork(): store information about the parent too | dzwdz | |
2021-08-18 | rename process_clone to process_fork | dzwdz | |
2021-08-18 | store the processes as a tree instead of a list | dzwdz | |
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-31 | kmalloc() and kfree() stubs | dzwdz | |
2021-07-26 | rename process_new() to process_seed() | dzwdz | |
it's only meant to create the root process, the old name could've been misleading | |||
2021-07-26 | exit() now switches to the first running process | dzwdz | |
i used a linked list because it's the simplest way to implement this | |||
2021-07-26 | fork() pt 1: cloning process memory | dzwdz | |
2021-07-24 | fix some warnings | dzwdz | |
2021-07-24 | sysexit() now overrides all registers | dzwdz | |
when doing anything more complex than starting a new program, you pretty much need to pass a full register dump. otherwise stuff will break | |||
2021-07-24 | save all registers on syscalls | dzwdz | |
2021-07-21 | fix init stack alignment | dzwdz | |
2021-07-20 | per-process virtual memory | dzwdz | |
VGA is only mapped into the virtual memory because there are no other ways of interacting with the OS. | |||
2021-07-18 | move all kernel sources to src/kernel/ | dzwdz | |
2021-07-10 | a sensible source structure | dzwdz | |
The idea is that src/kernel/ is only allowed to interface with the hardware using whatever's defined in src/arch/generic.h. I'll probably write a small script for checking this later on. This is a giant commit so I've probably fucked something up. It boots fine on Bochs and QEMU, so at least there's that. |