TODO
====

Architectural Milestones
[-] 64-bit rewrite
[x] Limine (Bootloader)
[ ] Decent build system (feat. cross-compiler)
[x] kernel.h rewrite & header cleanup
[x] debugf() cleanup, kprintf() & pr_*() (Standardized logging levels)
[x] errno.h errors and "errno-in-pointer" macros

Low-Level Hardware & Interrupts
[x] GDT
[x] IDT
[x] Basic IRQs (Internal/Legacy)
[x] Proper fault handling (Exceptions, Page Faults, #GP)
[-] Check for features with CPUID (NX-bit, SSE, AVX)
[ ] APIC driver (Local APIC & I/O APIC)
[ ] ACPI driver (Parsing RSDP/MADT for multi-core/APIC)
[ ] HPET driver (High precision timing)

Memory Management
[x] Physical memory manager (Bitmap or Buddy)
[x] Paging (Recursive or Offset mapping)
[-] Kernel heap (kmalloc/kfree - Linked list or Slab)
[ ] Memory mapped I/O (MMIO) API for drivers
[ ] VMM: Shared memory regions (For IPC/Framebuffers)
[ ] VMM: Copy-on-Write (COW) support (Optional but good)

Multitasking & User Space
[ ] System calls (SYSCALL/SYSRET implementation)
[ ] Context switching (Saving/Restoring CPU state)
[ ] Tasking (Thread/Process control blocks)
[ ] Scheduler (Round Robin or Priority-based)
[ ] User-space stacks & privilege isolation (Ring 3)
[x] Stack Smash Protector

Interprocess Communication
[ ] Interprocess Communication (Sync/Async messaging)
[ ] Capability-based security (Optional: basic handle system)
[ ] Signal/Event system (Interrupt forwarding to user space)

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
[ ] Gaming???!!??
[ ] Run DOOM
[-] Finish all the TODOs

Legend
------
[ ] Not finished
[-] In progress
[x] Finished

