aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-04-08[Phase 2.4-2.6] Process table, round-robin scheduler, Ring 3 spawnCLAUDE_TESTNatasha Moongrave
Adds the task module (process control block, PROCESS_TABLE, round-robin scheduler, and iretq-based Ring 3 entry) and wires set_syscall_kernel_stack into the scheduler so SYSCALL uses the current process's kernel stack. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08[Phase 2.2/2.3] SYSCALL/SYSRET MSR setup + syscall dispatcherNatasha Moongrave
syscall/mod.rs: - Configure STAR (kernel CS=0x08, user base=0x10), LSTAR, SFMASK (clear IF), EFER.SCE to enable the SYSCALL/SYSRET instruction pair - Naked assembly entry stub: swapgs, save/restore user RSP via per-CPU static, remap r10→rcx for Linux arg4 convention, call Rust syscall_handler, sysretq - validate_user_ptr(): bounds check for all user pointers (0..USER_ADDR_MAX) - set_syscall_kernel_stack(): for scheduler to update per-CPU kernel RSP syscall/dispatch.rs: - dispatch(): routes syscall numbers; unknown → -ENOSYS (never panics) - sys_write(fd, buf, count): fd 1/2 → serial; validates user ptr; read_volatile loop avoids Rust aliasing assumptions on untrusted memory - sys_exit(): serial log + hlt_loop() placeholder; Phase 2.5 adds scheduling lib.rs: register syscall::init() + syscall::init_kernel_stack() in strix_os::init() All existing integration tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08[Phase 2.1] GDT user space segments + heap growthNatasha Moongrave
- Restructure GDT to add kernel_data/user_data/user_code in the order required for SYSCALL/SYSRET ABI: 0x08 kernel code, 0x10 kernel data, 0x18 user data, 0x20 user code, 0x28 TSS STAR MSR values: STAR[47:32]=0x08, STAR[63:48]=0x10 - Add TSS.privilege_stack_table[0] (RSP0) with 8 KiB static initial stack for Ring3→Ring0 hardware interrupt transitions - Expose GDT static and all Selectors fields as pub (needed by syscall module) - Add set_kernel_stack(VirtAddr) for scheduler to update RSP0 per-process - Grow HEAP_SIZE 100 KiB → 4 MiB to support process table + kernel stacks - Fix pre-existing lifetime elision lint in allocator.rs - Update flake.nix: add cpio, busybox, gdb, binutils, e2fsprogs - Update NOTES.md with decisions and next steps Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-08[Step 0] Add PLAN.md and NOTES.mdNatasha Moongrave
PLAN.md: Full 7-phase development roadmap with progress tracker, per-phase tasks, integration test specs, security baseline, and dependency list. NOTES.md: Running developer log for context recovery after session resets. Documents key architecture decisions (GDT segment order, filesystem strategy, heap sizing, syscall ABI). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-01POST 11 DONEHEADmasterNatasha Moongrave
2026-04-01added a many_boxes_long_lived intgration test for heap_allocationNatasha Moongrave
2026-04-01Added all new implemented allocators to allocator.rsNatasha Moongrave
2026-04-01implemented a fixed size block allocatorNatasha Moongrave
2026-04-01implemented a linked list allocatorNatasha Moongrave
2026-04-01implemented a bump allocatorNatasha Moongrave
2026-03-30POST 10 DONENatasha Moongrave
2026-03-30added integration tests for heap allocationNatasha Moongrave
2026-03-30add debug messages for heap and alloc in entry functionNatasha Moongrave
2026-03-30add alloc to lib.rsNatasha Moongrave
2026-03-30create the allocatorNatasha Moongrave
2026-03-30configure allocNatasha Moongrave
2026-03-30add allocator as a dependencyNatasha Moongrave
2026-03-30Add high-value integration tests for kernel functionalityNatasha Moongrave
- timer_interrupt: verifies timer IRQ fires and PIC EOI works - page_fault: verifies page fault handler triggers on unmapped access - page_table: tests CR3 reading and address translation - frame_allocator: tests physical frame allocation from memory map
2026-03-30Merge Documenting into masterNatasha Moongrave
2026-03-30Added a proper README.mdDocumentingNatasha Moongrave
2026-03-30added CLAUDE.mdNatasha Moongrave
2026-03-30added serial output integration testsNatasha Moongrave
2026-03-30Added a whole lot of documentationNatasha Moongrave
2026-03-30POST 09 DONENatasha Moongrave
2026-03-30fixed main.rsNatasha Moongrave
2026-03-30added frame allocators to src(memory.rsNatasha Moongrave
2026-03-30fixed cargo.toml to have a proper physical-memory-offset and moved ↵Natasha Moongrave
test-success-exit-code from incorect bootloader package config to bootimage package config
2026-03-30fixed up lib.rs to use the proper kernel_main and test_kernel_main entry pointNatasha Moongrave
2026-03-30added the printing of level 4 page table addresses on runtime + configured a ↵Natasha Moongrave
proper entr ypoint founction instead of a C make #no_mangle _start kernel_main()
2026-03-30created src/memory.rs for helping keep track of physical and virtual memoryNatasha Moongrave
2026-03-30Added a physical memory offset of ~90.6 TiB to cargo.tomlNatasha Moongrave
2026-03-30Added boot_info argument to e passed into the entry _start() functionNatasha Moongrave
2026-03-30added "map_physical_memory" as a required feature of the bootloader crate in ↵Natasha Moongrave
Cargo.toml
2026-03-27POST 08 DONENatasha Moongrave
2026-03-27Added debug line to print the physical address of the level 4 page tableNatasha Moongrave
2026-03-27Updated variable to be prefixed with _ to avoid rust unused variable ↵Natasha Moongrave
compiler warning
2026-03-27Add roadmap.md for planNatasha Moongrave
2026-03-13added handling for page fault exceptions in interrupts.rsNatasha Moongrave
2026-03-13added comments explaining the handlers in src/interrupts.rsNatasha Moongrave
2026-03-11POST 07 DONENatasha Moongrave
2026-03-11fixed controller characters being shown when pressed in src/interrupts.rsNatasha Moongrave
2026-03-11rewrote keyboard_interrupt_handler() in src/interrupts.rs to use pc_keyboard ↵Natasha Moongrave
package to translate scancodes into their proper keys and print them to the screen
2026-03-11added the keycodes of set 0 to support printing numbersNatasha Moongrave
2026-03-11added pc-keyboard as a dependency in Cargo.toml to avoid configuring all of ↵Natasha Moongrave
the keyboard codes manually
2026-03-11fixed a mismatch in variable declaration of port in src/interrupts.rsNatasha Moongrave
2026-03-11added support to handle scancodes and print them to the screenNatasha Moongrave
2026-03-11added base handling for keyboard (PS/2) hardware interrupts in src/interrupts.rsNatasha Moongrave
2026-03-10replace the loop{} in pani() and _start() to keep the machine running with ↵Natasha Moongrave
the xustom hlt_loop to allow for better power efficiency and not need to amx out the CPU to hog cycles in src/lib.rs
2026-03-10replace the loop{} in pani() and _start() to keep the machine running with ↵Natasha Moongrave
the xustom hlt_loop to allow for better power efficiency and not need to amx out the CPU to hog cycles in src/main.rs
2026-03-10added a halt instruction loop to not sleep via constantly spinning the cpu ↵Natasha Moongrave
on 100% but instead allow it enter a sleep state until the next instruction via the hlt signal in src/lib.rs