Skip to content

Files

Latest commit

 

History

History
142 lines (123 loc) · 3.72 KB

notes.md

File metadata and controls

142 lines (123 loc) · 3.72 KB

Notes and ToDos for active and planned future work

This is a list of all active and planned work. They can be removed once they are checked off. Use the task template bellow for larger tasks that need some design work or require additional information. Those can be moved under the Completed section once they are finished.

  • Documentation
    • Add design doc for boot stages and move out of readme
    • Update boot stages to be more accurate
    • Filesystem documentation
    • Move doc files under design folder
    • Clean up goals in readme
      • Remove completed section (make checked boxes in list)
      • Cleanup Goals term lists
    • System call arch
  • mmu
    • free interior pages when malloc free's entire virtual page
  • tar
    • list directories
  • disk
    • ata driver
    • floppy driver
    • ram disk driver
  • test (os built in)
    • circbuff_rpop
    • circbuff_read edge case read after remove where start has changed
  • ram
    • handle region overlap
  • rtc
    • pretty much everything
  • dir
    • pretty much everything
  • file
    • pretty much everything
  • Handle page faults
    • eg. add pages for user space stack
  • Ring 3
    • load code
    • add gdt
    • setup tss
    • kernel interrupts
  • Document code
    • cpu/idt.h
    • cpu/isr.h
    • cpu/mmu.h
    • cpu/ports.h
    • ram.h
    • drivers/timer.h
    • drivers/ata.h
    • drivers/keyboard.h
    • drivers/ramdisk.h
    • drivers/rtc.h
    • drivers/tar.h
    • drivers/vga.h
    • libc/circbuff.h
    • libc/dir.h
    • libc/file.h
    • libc/memory.h
    • libc/stdio.h
    • libc/string.h
    • commands.h
    • debug.h
    • defs.h
    • disk.h
    • kernel.h
    • term.h
  • Test code
    • cpu/idt.h
    • cpu/isr.h
    • cpu/mmu.h
    • cpu/ports.h
    • ram.h
    • drivers/timer.h
    • drivers/ata.h
    • drivers/keyboard.h
    • drivers/ramdisk.h
    • drivers/rtc.h
    • drivers/tar.h
    • drivers/vga.h
    • libc/circbuff.h
    • libc/dir.h
    • libc/file.h
    • libc/memory.h
    • libc/stdio.h
    • libc/string.h
    • commands.h
    • debug.h
    • defs.h
    • disk.h
    • kernel.h
    • term.h
    • sys_call.h
  • Move drivers and other os level code out of kernel (only keep essentials)

TSS / Process

In an effort to reach ring 3, there are a few required systems to setup.

TSS needs a kernel stack. The space between the vga page and kernel code, there will exist the kernel stack for TSS / interrupts.

Tasks

  • Setup kernel stack pages bellow VGA memory
    • Assign TSS
  • Function to create a new process struct
    • Create page directory
    • Copy kernel tables
    • Point malloc to here

Template Task

Description of task and any relevant details / information.

Tasks

  • Sub task list

Completed

Physical Allocator

How to access region bitmask in paging mode?

I wrote the physical allocator before the paging allocator. So all operations expect direct access (identity mapping) of the region bitmask page.

Ideas

  1. Have a dedicated virtual address for all possible region bitmask pages
    • Would require extra lookup from region table for physical addresses of each page (ie. cant just use bitmask address + page index)
  2. ...

Tasks

  • It looks like I might have already accounted for this in the virtual address space table. I need to check if this has been implemented.
    • The bitmasks are already mapped to their virtual space starting at 0x9f000
    • ram.h functions operate in virtual address space (except ram_init and create_bitmask)
  • Finish commenting map_virt_page_dir in kernel.c