mirror of
https://github.com/Tom-on64/kern.git
synced 2026-11-03 18:22:22 +00:00
Major TODO rewrite and minor README changes :)
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user