5.6 KiB
5.6 KiB
12-Month Implementation Plan for UniversalisOS
This document outlines a strategic 12-month roadmap to implement all the currently stubbed and missing features in the universalisos codebase. The plan is structured into four quarters, prioritizing fundamental architectural foundations first, moving through driver implementations, and finalizing with higher-level APIs and POSIX conformance.
Quarter 1: Architecture Foundations & Memory Management
Focus: Stabilizing the memory model, core boot paths, and architectural primitives.
Month 1: ARMv7 Core & Memory Management
- Objective: Establish robust memory management and exception handling for ARMv7.
- Tasks:
- Implement platform-specific FIQ handling (
exceptions.cpp). - Complete MMU initializations in
uos_cmm.cpp:uos_arm_init_mmu,_activate_mmu, and_deactivate_mmu. - Finalize TTBR0/TTBR1 setup, translation table base control (TTBCR), and Domain Access Control (DACR).
- Implement Process Stack Pointer (PSP) initialization.
- Implement platform-specific FIQ handling (
Month 2: RISC-V Foundations & Virtualization Base
- Objective: Make the RISC-V port fully functional in terms of virtualization and loading.
- Tasks:
- Implement ELF parsing in the guest loader (
guest_loader.cpp). - Implement demand paging and memory-mapped I/O (MMIO) emulation (
vm.cpp). - Implement hypervisor partition control: stop and restart partition mechanisms (
hm.cpp).
- Implement ELF parsing in the guest loader (
Month 3: Schedulers & Exceptions Cleanup
- Objective: Finalize the scheduler logic and ensure all traps/exceptions are handled.
- Tasks:
- Implement proper blocking with timeouts in the core scheduler (
scheduler.cpp). - Address and implement all unhandled/stubbed exception pathways marked as "Not implemented for now" in both
arm_exceptions.cppandriscv_exceptions.cpp.
- Implement proper blocking with timeouts in the core scheduler (
Quarter 2: Apple M1 (AArch64) Enablement & SMP Support
Focus: Bringing the Apple M1 port up to parity and enabling symmetric multiprocessing across the board.
Month 4: Apple M1 Core Initialization
- Objective: Boot the Apple M1 platform with full memory layout awareness.
- Tasks:
- Implement memory range parsing and build proper page tables (
main_apple.c). - Implement RVBAR spin table initialization for core awakening.
- Finalize the freestanding
linux_stub.cfunctionality into a robust testing payload.
- Implement memory range parsing and build proper page tables (
Month 5: Symmetric Multiprocessing (SMP)
- Objective: Support multi-core execution environments.
- Tasks:
- Implement SMP secondary CPUs bring-up specifically for the Apple M1 (
main_apple.c). - Implement standard secondary-CPU bringup via PSCI (SMC CPU_ON) for generic ARMv7/AArch64 (
uos_smp.cpp).
- Implement SMP secondary CPUs bring-up specifically for the Apple M1 (
Month 6: Apple M1 Hypervisor & Base Display
- Objective: Establish EL2 virtualization and early visual feedback.
- Tasks:
- Implement Hypervisor EL2 guest support (
SYS_IMP_APL_VM_CONFIG_EL1). - Begin platform initializations by implementing the Display driver for the Apple M1.
- Implement Hypervisor EL2 guest support (
Quarter 3: Device Drivers & Subsystems
Focus: Replacing driver stubs to enable storage, networking, and system interoperability.
Month 7: Core Driver Infrastructure
- Objective: Implement the infrastructure required for devices to generate and handle events.
- Tasks:
- Implement real interrupt handlers for Storage, Human Interface (HMI), System Infrastructure, Advanced Interface, and Virtualization (
platform/drivers/driver.cpp). - Implement API endpoints for board reset (
usp_board_reset) and board shutdown (usp_board_shutdown) inuos_api.cpp.
- Implement real interrupt handlers for Storage, Human Interface (HMI), System Infrastructure, Advanced Interface, and Virtualization (
Month 8: Primary Subsystem Drivers
- Objective: Build out the drivers required for standard I/O operations.
- Tasks:
- Replace Storage and System driver stubs with functional implementations (
uos_drivers.cpp). - Implement Communication and Network driver foundations.
- Implement character availability checking on the UART (
usp_board.cpp).
- Replace Storage and System driver stubs with functional implementations (
Month 9: Advanced & Platform-Specific Drivers
- Objective: Complete the driver stack, especially for the M1 platform.
- Tasks:
- Implement PCIe, NVMe, and USB initialization for the Apple M1 (
main_apple.c). - Complete the Advanced, Virtualization, HMI, and Watchdog driver stubs (
uos_drivers.cpp). - Ensure MMIO proxy stubs (
uos_pv_abi.cpp) correctly forward read/writes.
- Implement PCIe, NVMe, and USB initialization for the Apple M1 (
Quarter 4: POSIX ABI, VFS, & Finalization
Focus: Higher-level OS features, POSIX conformance (PikeOS parity), and final integration.
Month 10: POSIX Task Management
- Objective: Provide robust POSIX-like process semantics.
- Tasks:
- Implement
task_forkandtask_waitpidinuos_posix_abi.cpp. - Implement the "Halt partition" logic.
- Initialize POSIX subsystems properly in
posix_config.c. - Address the POSIX ABI memory management declarations (
mm.h).
- Implement
Month 11: Virtual Filesystem (VFS) & Sockets
- Objective: Enable a fully functional virtual filesystem and networking endpoints.
- Tasks:
- Flesh out the VFS implementation: Ensure
munmapcorrectly frees memory resources (vfs.cpp). - Implement VFS socket operations:
socket,bind,listen, andaccept.
- Flesh out the VFS implementation: Ensure
Month 12: Testing, Profiling & Hardening
- Objective: Achieve stability and complete the PikeOS 5.0 gap closure.
- Tasks:
- Validate all PikeOS API parity interfaces against the reference implementations.
- Perform cross-architecture testing (ARMv7 QEMU, Apple M1, RISC-V Icicle Kit) to ensure regression-free boots.
- Conduct performance profiling, specifically on the new scheduler blocking and MMU logic.
- Security review of partition isolation and demand paging.