- 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