- You must implement a complete, stable and functionnal memory system in your kernel.
- You must enable memory paging in your kernel
- You must code a memory structure that handle paging and memory rights
- You must define kernel and user space
- You must implement a function to create / get memory pages
- You must implement kmalloc, kfree, ksize, kbrk for physical memory
- You must implement vmalloc, vfree, vsize, vbrk for virtual memory
- You must handle "kernel panics" (print, stop the kernel)
- Create an Interrupts Descriptor Table, fill it and register it
- Hardware Interrupts
- Software Interrupts
- A signal-callback system on your Kernel API
- An interface to schedule signals
- Global Panic Fault handling
- An interface to clean registers before a panic / halt
- An interface to save the stack before a panic
- When you’re done with all of that, you’ll have to implement a IDT keyboard handling system.
- It has not been said, but syscalls are also handled by the IDT. You can’t implement them now (No processus / Execution), but a good start could be coding the base functions for it, it could save you some work.
- Also, you can add some features to the keyboard handler, for example multi layouts (qwerty, azerty), base functions like get_line (just like read: waits for characters and return them when \n is pressed).
- fix
ldwarnings - bring back
enable_pagingfrom old x86_64 code - bring back
setup_page_tablesfrom old x86_64 code and adapt it to 32-bit - bring back blinking cursor
- second keyboard then repush kfs-4
- proper comments for gdt
- count timer interrupts
- show timer command (.......)
- debug screen and error screen where we can’t print
-
511->ENTRY_SIZE - 1 -
EntryFlags->TableEntryFlags - command history with vector to test memory
- cpuinfo command
- use
size_ofinstead of 64 where applicable - fix absolute path in
.vscode/settings.json - snake
- optimize vga history with a ring buffer
- nice help menu with
Code page 437border characters - bring back testing and more useful stuff from v2
- colorful tests (with color module based on
colored) - full exploration of possible deadlocks
-
print_screencreates a file using serial port - use https://doc.rust-lang.org/nightly/core/cell/ instead of
lazy_staticcrate - Interrupt handlers should only perform the minimal amount of work necessary
- warning screen (F11)
- debug screen (F12)
- separate user and kernel stacks
- mouse (scroll history)
- find project name and rebrand
- update nightly version
- set timeout=10 (and maybe several entries) for correction
- check executable does not exceed 10 MB before push (try with release mode)
- fix compiler warnings