Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 142 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,142 @@
# VoidFrame
i have nothing to do so i made a kernel, dont expect much
# VoidFrame Kernel Development Checklist

> *This file tracks the current status of all core OS features for VoidFrame.*

---

## 🧱 Core Infrastructure

- [x] Bootloader (GRUB2 with Multiboot2)
- [x] GDT & TSS setup
- [x] IDT & Interrupt Handling
- [x] PIC remapping & IRQ handling
- [x] PIT / Timer setup
- [x] Basic `printf` to VGA text mode
- [x] Kernel memory allocator
- [x] Panic screen with ASCII art (yes this is mandatory)

---

## 🧠 Memory Management

- [x] Physical memory manager (free list or bitmap)
- [x] Page table setup (paging enabled)
- [ ] Virtual memory mapping API (`vmem_map()`, etc.)
- [ ] Kernel heap (virtual, malloc/free)
- [ ] Per-process page tables
- [ ] User-mode memory protection

---

## ⚙️ Process Management & Scheduling

- [x] Process control block (PCB)
- [x] Scheduler (MLFQ)
- [x] Context switching
- [x] Preemption via PIT
- [x] Process creation
- [x] Process termination
- [x] Token/privilege-based validation
- [x] Scheduler aging/starvation fix
- [ ] CFS or vruntime-based scheduler (optional/bonus)

---

## 🔐 Ring 3 Support (Userspace) (unmaintained)

- [ ] User-mode process flag
- [ ] IRETQ from syscall/interrupt
- [ ] Syscall handling (`syscall` or `int 0x80`)
- [ ] Userland stack setup
- [ ] Memory isolation (Ring 3 can't touch kernel)
- [ ] Transitioning back to kernel on syscall

---

## 🧩 Module System

- [x] Multiboot2 module loading
- [ ] Basic kernel extensions (`vmod`)
- [ ] Signature/token validation
- [ ] Hot module unloading (optional)
- [ ] Module registration system

---

## 📦 ELF Executable Support

- [ ] ELF64 header parsing
- [ ] Program header mapping (`PT_LOAD`)
- [ ] Set up new stack
- [ ] Jump to entry point
- [ ] Static binaries only (no relocations)
- [ ] Dynamic linker / interpreter (WAY later)

---

## 🧠 Init System

- [x] Boot SKIS (SecureKernelIntegritySubsystem)
- [ ] Create `init` process from `vmod` or ELF
- [x] Init spawns userland shell or TUI

---

## 💬 IPC / Syscalls

- [x] Syscall dispatch system
- [ ] Basic message passing (pipe, queue, or buffer)
- [ ] Shared memory region
- [ ] Signals or async delivery
- [ ] Named channels or sockets

---

## 📁 Filesystem & I/O

- [ ] Initrd loading
- [ ] Basic filesystem parsing (e.g., tarfs or ext2-lite)
- [ ] Read/write file API (`fs_open()`, etc.)
- [ ] VFS layer (optional)
- [ ] Device files (`/dev/null`, `/dev/tty0`, etc.)

---

## 🧑‍💻 Userland Development

- [ ] Userspace C runtime (libc-lite)
- [ ] Shell (`sh.vmod` or `sh.elf`)
- [ ] Basic CLI utilities (`cat`, `ls`, `echo`, etc.)
- [ ] Keyboard driver routed to userland
- [ ] VGA console or terminal emulator

---

## 🔧 Debug & Developer Features

- [x] Print kernel logs to VGA
- [ ] Serial logging
- [x] `dmesg`-style kernel log buffer
- [ ] Stack backtrace / panic debug dump
- [ ] Memory usage counters

---

## 🌈 Extra Spice (optional but cool)

- [ ] Framebuffer graphics support (UEFI mode)
- [ ] Loadable GUI modules
- [ ] Virtual terminal switching (`tty0`, `tty1`)
- [ ] Profiling support (ticks per process)
- [ ] Syscall tracing / log
- [ ] Live module patching

---

## 🏁 Final Goals (v1.0 release)

- [ ] Bootable ISO with GRUB2 EFI support
- [ ] Fully self-hosted userland shell
- [ ] User process execution (ELF64)
- [ ] Init system + FS + IPC working
- [ ] At least one userland demo program