See also: Home, Developer Guide
Current todo
-
❏ Add Rust compilation support for kernel
-
✓ Refactor kernel dylib system to kernel modules
-
❏ Add dynamic linker support for kernel
-
✓ Make kernel not use the reserved memory region and only BSS + Heap
-
❏ FAT LFN support
-
❏ ATAPI and ISO9660 optical driver support
-
✓ Fix usermode programs not able to read from stdin
-
❏ Create custom bootloader
-
❏ DMA mode hardware drivers
-
✓ External runtime dependencies compiled during build not toolchain
-
❏ Make kernel PIC & PIE
-
❏ Smart heap allocation for kernel that actually "frees" the memory
Phase 1: Core OS Infrastructure (Current)
Memory Management
-
✓ Virtual memory / paging (per-process address spaces)
-
✓ Heap management (brk/sbrk syscalls for malloc)
-
✓ Stack management (per-process user stacks)
-
✓ Refactor user stack allocation (move from process.c to stack.c)
-
✓ Implement
Stack_CreateUserusing PMM/Paging (not kmalloc) -
✓ Map user-mode exit trampoline (fix GPF on return)
-
✓ Update TSS ESP0 on context switch
-
-
❏ Memory protection (read/write/execute permissions)
-
✓ Page tables and MMU setup
Process Management
-
✓ Process Control Block (PCB) structure
-
❏ Process creation & destroy (fork/execve syscalls)
-
✓ Add Kernel Stack to Process Struct
-
✓ Allocate Kernel Stack in Process_Create
-
✓ Free Kernel Stack in Process_Destroy
-
✓ Set Parent PID
-
❏ Initialize Standard File Descriptors (stdin, stdout, stderr)
-
✓ Handle Arguments (argv/envp)
-
✓ Scheduler Registration
-
-
✓ Process scheduling & context switching (basic round-robin)
-
✓ Process termination (exit syscall)
-
❏ Signal handling (signal syscalls)
-
❏ User-mode ring 3 execution
-
✓ Kernel-mode execution
-
❏ User/kernel mode switching
Filesystem
-
✓ FAT filesystem read/write (basic done)
-
✓
FAT_Create()- create new files -
✓
FAT_Delete()- delete files -
✓ Multi-cluster file support (files > 1 cluster)
-
✓ Device files abstraction
-
✓ File descriptors table per process
-
❏
FAT_Stat()- file metadata
Terminal Support
-
✓ TTY driver for
/dev/tty0 -
✓ Terminal line discipline (buffering, echo control)
-
✓ ANSI escape sequence support
-
✓ Keyboard input handling
-
✓ Terminal control ioctl calls
Phase 2: Syscalls Wrappers
File I/O Syscalls
-
✓
read- read from file descriptor -
✓
write- write to file descriptor -
✓
open- open file -
✓
close- close file descriptor -
✓
lseek- seek in file -
❏
fstat,stat,lstat- file metadata -
❏
ioctl- device control -
❏
fcntl- file control -
❏
access- check permissions
Memory Syscalls
-
✓
brk- set data segment size (for malloc) -
❏
mmap,munmap- memory mapping -
❏
mprotect- set memory protection -
❏
mremap- remap memory region
Process Syscalls
-
✓
exit- process termination -
❏
exit_group- process termination group -
✓
fork- process creation -
❏
clone- thread/process creation -
✓
execve- execute program -
❏
wait4,waitpid- wait for child process -
❏
getpid,getppid- process IDs -
❏
getuid,setuid- user IDs -
❏
geteuid,getgid,getegid- group IDs
Signal Syscalls
-
❏
signal,sigaction- signal handlers -
❏
sigprocmask,sigpending- signal masking -
❏
kill- send signal -
❏
pause- wait for signal -
❏
alarm- timer signal -
❏
sigreturn- return from signal handler
Time Syscalls
-
❏
time- current time -
❏
gettimeofday,clock_gettime- precise time -
❏
nanosleep- sleep -
❏
select,poll- I/O multiplexing
Miscellaneous Syscalls
-
❏
uname- system info -
❏
getpagesize- page size -
❏
prctl- process control -
❏
umask- file creation mask -
❏
nice,getpriority,setpriority- scheduling
Phase 3: Advanced Features
Device Support
-
✓
/dev/nulldevice file -
✓
/dev/zerodevice file -
❏
/dev/random,/dev/urandom- entropy -
❏ Block device interface
-
❏ Character device interface
-
✓ Device node mounting
Filesystem Extended
-
❏ Permission checking (uid/gid/mode)
-
❏ Directory creation (
mkdir) -
❏ Directory deletion (
rmdir) -
❏ Symlink support
-
❏ Hard link support
-
❏ File ownership and chmod
Dynamic Linking
-
✓ Custom dylib system (exists)
-
✓
/lib,/usr/liblayouts (done) -
❏ LD_LIBRARY_PATH support
-
❏ Symbol versioning
-
❏ RPATH support
Networking
-
❏ Socket syscalls (
socket,bind,listen,connect,accept) -
❏ UDP/TCP support
-
❏ DNS resolution
-
❏ Network device drivers