Things to Do:
- Scale heap to available memory
- Maybe convert NASM code into GNU AS
- Maybe convert C code into C++
- Maybe migrate to Clang
- Sort memory map with merge sort
- Stability
- Solve triple fault with TSS.
- Ensure static allocator doesn't overwrite modules, which GRUB loads immediately after the kernel.
- Debugging facilities
- Display strings, integers and pointers.
- Dump the contents of the registers.
- Dump the contents of memory as hex values.
- Stack trace
- Unwind stack frames (seems to get bad values; see
src/debug/dump_stack.c
). - Symbol lookup
- Create symbol map (see
tools/gensymtab
). - Load symbol map
- Load initial ramdisk
- Define initial ramdisk (see
include/kernel/initrd.h
). - Create initial ramdisk.
- Load initial ramdisk
- Define initial ramdisk (see
- Parse symbol map at
ramdisk:/boot/kernel.map
- Load initial ramdisk
- Map addresses to symbols.
- Create symbol map (see
- Unwind stack frames (seems to get bad values; see
- Write unit tests
- Make functions reentrant