Skip to content

Latest commit

 

History

History
71 lines (52 loc) · 2.7 KB

File metadata and controls

71 lines (52 loc) · 2.7 KB

FKernel - List of changes

Toolchain

  • Create a custom toolchain to FKernel
    • Lua
    • Clang
    • Nasm
    • Lld

FKernel

  • Create a Adapter class to BlockDevice

  • Create a base class Hardware Interrupt to be inherited by (8259Pic / APIC ...)

  • Create a base class Timer to be inherited by (PIT, APIC Timer ...)

Use OpTables to configure globally

LibFK

  • Create a class to make CRTP

FKernel - Core Functionality

  • Interrupt and Timer Management Refinement:

    • Implement HardwareInterrupt base class (Strategy pattern for PIC/APIC).
    • Implement Timer base class (Strategy pattern for PIT/APIC Timer).
    • Dynamically register/unregister interrupt handlers.
    • Support for multi-core interrupt distribution (using IOAPIC).
  • Process and Thread Management:

    • Implement basic process control block (PCB) structure.
    • Implement thread control block (TCB) structure.
    • Develop a basic scheduler (e.g., round-robin).
    • Implement context switching mechanism.
    • Implement process creation (fork/exec).
    • Implement thread creation.
    • Basic inter-process communication (IPC) mechanisms.
  • System Call Interface:

    • Define a system call table.
    • Implement a system call dispatcher.
    • Implement basic system calls (e.g., read, write, open, close, exit).
  • User Mode Support:

    • Implement mechanisms to switch between kernel and user mode.
    • Load and execute user-mode programs.
    • Enforce memory protection between user processes and kernel.
  • Advanced Memory Management:

    • Implement kernel heap for dynamic allocations (already has TLSFHeap, but ensure it's robust).

    • Implement user-space memory allocation (e.g., sbrk for processes).

    • Support for demand paging and swapping (if needed).

  • File System Enhancements:

    • Implement a real disk filesystem (e.g., FAT32, ext2/3/4).
    • Extend VFS with full POSIX file operations (e.g., stat, link, unlink, mkdir, rmdir).
    • Implement file permissions and ownership.
  • Device Drivers:

    • Generic driver framework.
    • Implement a basic network driver (e.g., for a virtual NIC in QEMU).
    • Implement a basic USB driver.

Toolchain

  • Complete custom toolchain:
    • Clang
    • Lld