Major TODO rewrite and minor README changes :)

This commit is contained in:
2026-03-22 15:25:33 +01:00
parent eca7c957e2
commit 004399c122
2 changed files with 80 additions and 37 deletions
+20 -7
View File
@@ -4,23 +4,36 @@ kern.
Idk why i called it that it was 3am and i needed sleep. Idk why i called it that it was 3am and i needed sleep.
!! WARNING !! !! WARNING !!
Kern is being rewritten at the moment. To see the last version before the rewrite, see commit 11feab5 on master. Kern is being rewritten at the moment. To see the last version before the
(https://github.com/Tom-on64/kern/tree/11feab5) rewrite, see commit 11feab5 on master. (https://github.com/Tom-on64/kern/tree/11feab5)
About About
----- -----
Kern is a 32-bit OS based on the x86 architecture written in NASM Assembly and C. Kern is a 64-bit OS based on the x86_64 architecture written in C & NASM
It attempts to be a µ-kernel, although i have no clue what i'm doing. Assembly. It attempts to be a µ-kernel, although i have no clue what i'm doing.
Dependencies Dependencies
------------ ------------
* binutils that can target i386-elf * binutils that can target x86_64-elf
* sfdisk * GCC that can target x86_64-elf
* GCC that can target i386-elf
* Limine * Limine
* make * make
* Mtools * Mtools
* NASM * NASM
* OpenSSL
* sfdisk
* QEMU (for emulation)
Building
--------
Building should be as easy as running:
$ make
If it says that a command was not found, check that the utilities are correctly
defined in config.mk.
If you want to emulate it with QEMU, you can run:
$ make qemu
Old Version: https://github.com/Tom-on64/old-kern Old Version: https://github.com/Tom-on64/old-kern
+60 -30
View File
@@ -1,35 +1,65 @@
TODO TODO
==== ====
[x] Boot Architectural Milestones
[x] Multiboot 1 [-] 64-bit rewrite
[x] Limine (Bootloader)
[ ] Decent build system (Makefile/CMake with cross-compiler)
[ ] kernel.h rewrite & header cleanup
[ ] debugf() cleanup & kprintf() (Standardized logging levels)
Low-Level Hardware & Interrupts
[x] GDT
[x] IDT [x] IDT
[x] ISRs [x] Basic IRQs (Internal/Legacy)
[x] GDT [ ] Proper fault handling (Exceptions, Page Faults, #GP)
[x] Physical MM [ ] Check for features with CPUID (NX-bit, SSE, AVX)
[x] Virtual MM [ ] APIC driver (Local APIC & I/O APIC)
[x] Paging [ ] ACPI driver (Parsing RSDP/MADT for multi-core/APIC)
[x] Serial monitor [ ] HPET driver (High precision timing)
[x] kmalloc()
[x] Make dedicated asm functions like lidt(), sti(), ... Memory Management
[ ] Add something like <errno.h> in the kernel [x] Physical memory manager (Bitmap or Buddy)
[ ] Improve kmalloc() to reduce fragmentation [x] Paging (Recursive or Offset mapping)
[ ] Improve kmalloc() for better alignment [ ] Kernel heap (kmalloc/kfree - Linked list or Slab)
[x] PIT [ ] Memory mapped I/O (MMIO) API for drivers
[ ] RTC [ ] VMM: Shared memory regions (For IPC/Framebuffers)
[ ] HPET [ ] VMM: Copy-on-Write (COW) support (Optional but good)
[x] System calls
[ ] Separate syscall sources into individual files Multitasking & User Space
[ ] Userspace [ ] System calls (SYSCALL/SYSRET implementation)
[x] Processes/Tasks [ ] Context switching (Saving/Restoring CPU state)
[x] Scheduler [ ] Tasking (Thread/Process control blocks)
[ ] Priority scheduler [ ] Scheduler (Round Robin or Priority-based)
[x] Task switching [ ] User-space stacks & privilege isolation (Ring 3)
[ ] Interprocess communication [x] Stack Smash Protector
[ ] ALL the message types
[ ] Graphics Interprocess Communication
[ ] Multicore support [ ] Interprocess Communication (Sync/Async messaging)
[ ] Networking :) [ ] Capability-based security (Optional: basic handle system)
[ ] Finish all the TODOs [ ] Signal/Event system (Interrupt forwarding to user space)
[ ] Run DOOM
Bootstrapping & Filesystem
[ ] USTAR parser (Read initrd.tar)
[ ] Initrd integration (Loading modules via Limine)
[ ] ELF parser (Loading PT_LOAD segments)
[ ] /init (The first user-space process)
[ ] VFS Server (Abstracting file requests via IPC)
Drivers & IO
[x] Serial driver (For kernel debugging)
[-] Framebuffer driver (Basic LFB/GOP)
[ ] PS/2 Keyboard driver (As a user-space server)
[ ] PCI Bus Enumerator (The "parent" of hardware drivers)
[ ] Storage driver (SATA/AHCI or VirtIO)
The Final TODOs
[ ] Run DOOM (Requires: VFS, Input, Timer, LibC, and Graphics)
[-] Finish all the TODOs
Legend
------
[ ] Not finished
[-] In progress
[x] Finished