summaryrefslogtreecommitdiff
path: root/src/kernel/main.c
AgeCommit message (Collapse)Author
2022-07-16amd64: init can print to the terminal nowdzwdz
2022-05-05kernel: each driver registers its own mountsdzwdz
2022-05-05kernel: move the COM1 driver to a separate handlerdzwdz
2022-04-28kernel/proc: automatically free processes given the chancedzwdz
2022-04-22kernel: recursive process_freedzwdz
2022-04-21kernel: consolidate `process_seed` and `run_init`dzwdz
2022-04-21kernel/proc: only expose `process_switch_any()`dzwdz
other parts of the kernel don't need to care about which process exactly gets switched into
2022-04-21kernel: `shutdown()`; temporarily print process states on shutdowndzwdz
2022-04-14kernel: port init's `printf` implementationdzwdz
2022-03-06kernel: print newlines after every boot stagedzwdz
IIRC i haven't done this because the vga driver doesn't support newlines - but it doesn't support a lot of other stuff used by the shell. This doesn't make the VGA output look any worse than it already did, and it makes the serial output nicer.
2021-09-20create a few specialized panic()sdzwdz
thanks to this i can tell which ones are placeholders, and which ones should stay
2021-09-19mark run_init as _Noreturndzwdz
2021-09-11replace `user_ptr` with a linux-style `__user` annotationdzwdz
2021-09-05move most of the memory stuff to kernel/mem/dzwdz
2021-08-24switch to using user_ptr for pointers coming from userlanddzwdz
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-09print the boot heart on both VGA and serialdzwdz
2021-08-09rename `log_` to `tty_`, `tty_` to `vga_`dzwdz
2021-08-03a bad testing frameworkdzwdz
2021-07-26rename process_new() to process_seed()dzwdz
it's only meant to create the root process, the old name could've been misleading
2021-07-25print a heart on bootdzwdz
2021-07-24fix some warningsdzwdz
2021-07-24save all registers on syscallsdzwdz
2021-07-22don't map the VGA console buffer in user processesdzwdz
2021-07-20per-process virtual memorydzwdz
VGA is only mapped into the virtual memory because there are no other ways of interacting with the OS.
2021-07-20rename pagedir_use() to pagedir_switch()dzwdz
imo "use" was slightly misleading
2021-07-19remove the unused r3_test functiondzwdz
2021-07-19very basic pagingdzwdz
2021-07-18basic executable loadingdzwdz
2021-07-18move all kernel sources to src/kernel/dzwdz
2021-07-17detect the highest used memory address, and only allocate pages above itdzwdz
2021-07-17basic boot module supportdzwdz
This loads a file from the boot disk into memory. Currently it just gets printed, but it's going to become a real executable soon.
2021-07-10abstract away loggingdzwdz
Now, the kernel only interfaces with the architecture dependent stuff via functions declared in generic.h. I'll write a linter enforcing this soon.
2021-07-10a sensible source structuredzwdz
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.
2021-07-10separate the source code from object files; more modular Makefiledzwdz