Skip to content
This repository has been archived by the owner on Nov 20, 2024. It is now read-only.

Latest commit

 

History

History
51 lines (44 loc) · 2.47 KB

TODO.md

File metadata and controls

51 lines (44 loc) · 2.47 KB

TODO


  • Optimize SMP.

  • Support IPv6.

  • Endianess of the network stack (currently: HOST<=>NETWORK). Not sure if this is a standard or not. (???)

  • Support 32-bit applications (ELF, PE, etc).

  • Do not map the entire memory. Map only the needed memory address at allocation time. (we just copy the pages for userland, see Fork() inside core/memory/page_table.cpp)

  • Implementation of logging (beside serial) with log rotation.

  • Implement a better task manager. (replace struct P/TCB with classes)

  • Rewrite virtual file system.

  • Colors in crash screen are not following the kernel color scheme.

  • Find a way to add intrinsics. (not feasible, use inline assembly)

  • Rework PSF1 font loader.

  • The cleanup should be done by a thread (tasking). This is done to avoid a deadlock. (not needed, everything is done by the scheduler)

  • Implement a better Display::SetBrightness() function.

  • Fix memcpy, memset and memcmp functions (they are not working properly with SIMD).

  • Fully support i386.

  • Support Aarch64.

  • SMP trampoline shouldn't be hardcoded at 0x2000. (0x2000 is in the conventional memory, it's fine)

  • Rework the stack guard.

  • Mutex implementation.

  • Update SMBIOS functions to support newer versions and actually use it.

  • COW (Copy On Write) for the virtual memory. (https://en.wikipedia.org/wiki/Copy-on-write)

  • Implement lazy allocation. (page faults)

  • Bootstrap should have a separate bss section + PHDR.

  • Reimplement the driver conflict detection.

  • Elf loader shouldn't create a full copy of the elf binary. Copy only the needed sections.

  • Use NX-bit.

  • Fix std::string.

  • Rewrite PS/2 drivers.

  • Improve signal handling.

  • Improve the way the kernel crashes.

    • Add panic() function.
    • Handle assertion failures.
  • Optimize screen printing.

    • On real hardware it's very slow, a solution is dirty printing.
  • Thread ids should follow the POSIX standard.

    • When a new process is created, the first thread should have the same id as the process id.
    • If pid is 400, the first thread should have the id 400. The second thread should have the id 401, etc.
  • Optimize the scheduler

    • Create a separate list for processes that are waiting for a resource or a signal, etc.
    • Use all cores to schedule threads.
  • Improve Remap() function.

    • Remove Unmap & Map logic. Remove all flags directly.