Max OS 0.3
Loading...
Searching...
No Matches
Todo List
File allocator.h
Maybe have a allocation result instead of req,actual size
File framebuffer.cpp
less messy static calls to progress bar and logos
File gdbstub.h
almost zero validation going on
File graphicsContext.h
Move to drivers/video?
File ipc.cpp

Import scheduler is a circular dependency, need to fix

Shouldnt have to specify type in resource constructor

File logger.h
move somewhere else (maybe even commonlib), rename common/ to generated/
File logo.h
remove common directory, make this generated
Member MaxOS::common::GraphicsContext::m_colour_pallet [256]
make const
Member MaxOS::common::GraphicsContext::put_pixel (uint32_t x, uint32_t y, uint32_t colour)
make them uint32_t
Class MaxOS::hardwarecommunication::AdvancedProgrammableInterruptController
Should either handle all Local APICs or none (only boot core right now, others accessed per core directly which is inconsistent)
Member MaxOS::hardwarecommunication::DeliveryMode
use this
Member MaxOS::hardwarecommunication::InterruptDescriptor::flags
substruct this)
Class MaxOS::hardwarecommunication::InterruptManager

Remove the max array of handler make vector, add static handlers for page faults and gpe. Make it so that multiple handlers can be registered for the same interrupt

Have a single stub so that we don't need to have 256 different functions for each interrupt

Member MaxOS::hardwarecommunication::InterruptManager::HandleInterrupt (system::cpu_status_t *status)
Exception handlers
Member MaxOS::hardwarecommunication::madt_io_apic_t
Rename for consistency
Member MaxOS::memory::allocator::ChunkHeader::next_chunk ()
PANIC here to make easier to debug, change to crash the prog isntead
Member MaxOS::memory::allocator::ChunkHeader::prev_chunk ()
PANIC here to make easier to debug, change to crash the prog isntead
Member MaxOS::memory::free_chunk_t
Could just use virtual_memory_chunk_t and use "flags" as a pointer?
Class MaxOS::memory::MemIO
Not used, delete?
Member MaxOS::memory::page_flags_t
: fix. this is stupid: Leave as enum not enum class for bitwise operations
Class MaxOS::memory::PhysicalMemoryManager
Global paging so dont have map in every process
Member MaxOS::memory::PhysicalMemoryManager::allocate_area (uint64_t start_address, size_t size)
freeing
Member MaxOS::memory::PhysicalMemoryManager::get_physical_address (virtual_address_t *virtual_address, uint64_t *pml4_root)
make static version
Member MaxOS::memory::PhysicalMemoryManager::s_current_manager
Make private with getter, maybe make mapping static?
Member MaxOS::memory::VirtualMemoryManager::load_range_from_process (VirtualMemoryManager *other_vmm, const void *start_address, size_t size)

maybe move from void* to uint8* ??

take flags for mapping (ro)

Class MaxOS::processes::BlockingLock
move to libcommon
Member MaxOS::processes::BlockingLock::acquire ()

Move the yielding logic into process/thread code so that it can be reused

circular dependancy resolution

Member MaxOS::processes::ELF64::is_valid () const
Add support for maxOS ABI
Member MaxOS::processes::ELF64::load_into_memory (memory::VirtualMemoryManager *vmm) const
Error handling
Member MaxOS::processes::GlobalScheduler::balance ()
Implement
Member MaxOS::processes::GlobalScheduler::prepare_initrd (multiboot_tag_module *module)
dont hardcode pid (and maybe not rely on Init being ordered after module)
Member MaxOS::processes::Process::Process (const string &name, void *args, int arg_amount, ELF64 *elf, bool is_kernel=false)
The elf class should be a subclass of Process
Member MaxOS::processes::resources::BridgeHandler::send_to_bridge (size_t id, KPI::ServiceResourceCommand command, const void *buffer, size_t size, size_t flags)
Get slot data before freeing
Member MaxOS::processes::resources::ProcessResourceRegistry::create_resource (const string &name, size_t flags, uintptr_t data) final
Process needs to own the Elf pointer and free it in destructor (do this when moving ELF as a superclass)
Member MaxOS::processes::resources::ProcessResourceRegistry::get_resource (const string &name) final
'this' is a bit mess
Member MaxOS::processes::resources::ThreadResourceRegistry::create_resource (const string &name, size_t flags, uintptr_t data) final
Implement opening threads
Member MaxOS::processes::Scheduler::schedule_next (system::cpu_status_t *status)
Remove by reference where possible
Member MaxOS::processes::SharedMessageEndpoint::read (void *buffer, size_t size, size_t flags) final
int here to size_t in syscall - fix
Member MaxOS::processes::SharedMessageEndpoint::send (const ipc_iovec_t *vec, size_t count)
validate stuff
Class MaxOS::processes::Thread
io bitmap per process instead
Member MaxOS::processes::Thread::Thread (void(*_entry_point)(void *), void *args, int arg_amount, Process *parent)
Cant use rsp0 for kernel stack storage as once scheduler starts up it may point to a userspace rsp0 (nor is it good to use the same stack for every process)
Member MaxOS::runtime::__stack_chk_guard
make random at runtime)
Member MaxOS::runtime::GDBServer::GDBServer (console::SerialConsole *serial)
GDB owns the interrupt here, should move to a serial API
Class MaxOS::runtime::KASanHandler
finish when cbf
Member MaxOS::system::Core::wake_up (CPU *cpu)
Should handle core fails and not delay once we are in c++
Member MaxOS::system::CPU::find_cores () const
Support for x2apic
Member MaxOS::system::syscall_func_t )(syscall_args_t *args)
Could use a class based response but a single class might want multiple handlers e.g. fs
Class MaxOS::system::SyscallManager
Very c style, should be made class based that automatically registers
Member MaxOS::system::SyscallManager::syscall_resource_registry_create (syscall_args_t *args)
resource type system
Struct multiboot_tag_framebuffer
should use this to setup graphix context pallet?
File virtual.cpp
VMM regions are right next to the userspace allocated blocks THIS IS BAD