Roadmap and status - KekkoTech-Softwares/K-ernel GitHub Wiki
Roadmap and status
The kernel is built in phases, each one a layer the next one needs. The short checklist lives in the README; this page is the longer version, plus the link to where the work is actually tracked.
| Phase | Subject | State |
|---|---|---|
| 0 | Development environment: cross-compiled i686-elf toolchain in a container |
done |
| 1 | Boot via GRUB/Multiboot, VGA text output, serial logging | done |
| 2 | GDT and TSS (segmentation) | done |
| 3 | IDT, exceptions and hardware interrupts (timer, keyboard) | in progress |
| 4 | Memory management: physical allocator, paging, heap | planned |
| 5 | Multitasking | planned |
| 6 | Drivers and filesystem | planned |
Phases 0 to 2 are closed, which here means more than "the code is written": each has self tests that run at every boot and interrogate the hardware, so a regression in a closed phase shows up as a failing check in the next boot rather than as a mystery three phases later.
What phase 3 already contains
-
An IDT with all 256 gates installed. 48 vectors have an entry point behind them — the 32 the CPU reserves for its own exceptions, plus the 16 the PIC was remapped onto — and the other 208 are left not present on purpose, so an unexpected vector produces a fault with a message instead of a jump into whatever happened to be at address zero.
-
One register-frame shape for every vector, exceptions with an error code and exceptions without alike, so the dispatcher and the dump do not need to know which kind they are looking at.
-
A diagnosable death: an unhandled exception prints the vector with the mnemonic the Intel manual uses, every general-purpose register,
eip,eflags, the error code and the segment registers, on every output channel, and then halts. No silent triple fault. -
The 8259A PIC pair remapped off the exception vectors onto vector 32 and up (vector 8 was
#DFand 13 was#GP— before the remap a timer tick and a double fault were indistinguishable), with every line masked, the spurious IRQ 7 / IRQ 15 rule handled inside the acknowledge path, and the cascade line managed on its own. -
A machine-independent interrupt interface: generic code says "run this when that line fires", "not now", "done", and never sees an x86 frame.
-
Self-test suites for the GDT, the PIC and the IDT, registered by the architecture at init and run at boot.
-
A periodic timer: the 8254 channel 0 at 100 Hz on IRQ 0, with a 64-bit tick counter that a 32-bit machine can read without ever catching it half updated. Every boot proves the tick arrives; the rate itself was measured once against a real clock, 3900 ticks in 39.000 s.
What the phase still owes is the keyboard, plus the gaps already written down as issues — see the milestone.
Milestones
Issues are grouped by the phase that has to settle them. That is also how a
security or debt issue gets a deadline: not "someday", but "before the
phase that would make it exploitable".
| Milestone | Scope |
|---|---|
| Phase 3 — Interrupts: IDT, exceptions and IRQs | What is left before the interrupt phase can be called closed: the #DF handler, the NMI gate with no handler behind it, a regression guard for the stub entry invariants. |
| Phase 4 — Memory management | The Multiboot memory map (received and currently ignored), validating it as outside input, a 64-bit physical address type before the allocator invents one, and the page-fault path. |
| Phase 5 — Multitasking | Everything that becomes real the moment there is more than one context and a ring 3: the per-task kernel stack in tss.esp0, the first iret frame, user segments that are still flat 0-4 GiB. |
| Phase 6 — Drivers and filesystem | Devices and storage. Open, nothing filed yet. |
| Backlog | Real but not phase-bound: a kprintf format bug, and generic code still reaching for x86 headers. |
The full list, filterable by label, is in Issues.
Which build am I looking at
The kernel prints its own version in the boot banner, from
include/version.h — one definition, so the number on screen is the number
of the tree you built. Quote that line (and the commit you built) when you
report anything; see Reporting issues.