1.4 KiB
1.4 KiB
Sylva OS — Agent Guide
x86_64 UEFI hobby OS kernel. C17 boot → C++17 kernel, ELF64 → PE32+ via objcopy.
Build & Run
| Command | What |
|---|---|
make |
Build build/BOOTX64.EFI |
make run |
QEMU + OVMF, serial → serial.log, paused for GDB (-s -S) |
make clean |
Always before commit — gnu-efi produces untracked files |
Architecture
boot.c— UEFI entrypoint (efi_main), callskernel_main()kernel/main.cpp—extern "C" kernel_main(): init GOP → serial → PMM → heap → idle loop (hlt)kernel/serial.cpp— UEFI serial protocol wrapperkernel/memory/pmm.cpp— bitmap + free-list physical page allocatorkernel/memory/heap.cpp— kmalloc/kfree/kcalloc/krealloc (first-fit, coalescing)graphics/— GOP framebuffer pixel drawingfonts/— Hankaku 8×16 pixel font renderergnu-efi/— git submodule (https://github.com/ncroxon/gnu-efi.git)
Quirks
uefi_call_wrapperrequired for all UEFI protocol calls or kernel page-faultskernel_mainmust beextern "C"(C→C++ linkage)- QEMU starts paused — connect GDB to :1234 to proceed
- No tests, no CI, no lint/formatter config
- C17 (
boot.c), C++17 (kernel/) - Standards:
-ffreestanding -fno-stack-protector -fshort-wchar -mno-red-zone #define ASM asm volatileininclude/common.hBUILD_INFOS.his a placeholder for CI