How aritrash/obisync works
Obisync is an experimental bare-metal AArch64 operating system. Its visible runtime starts at the architecture boot entry, selects board information, and hands execution to shared kernel startup; documented startup stages then initialize memory and scheduler facilities. During operation, timer interrupts drive ITAS scheduling, which chooses tasks and switches execution and address spaces. Major documented branches include exception/IRQ handling, physical and virtual memory, and scheduler tracing; drivers, filesystem, and security are visible as Stage 2 subsystems, though their internals and some startup wiring were not sampled.
Main entry points: sst/mod.rs Stage 2 orchestration · aarch64/mod.rs Exception and IRQ handling · memory.rs Memory startup · policy.rs Scheduling policy
Components 23
Boot and Platform
- Boot entry
kernel/src/main.rs - Board configuration
kernel/src/platform.rs - Kernel startup
kernel/src/coresync.rs - Exception and IRQ handling
kernel/src/arch/aarch64/mod.rs - GIC control
kernel/src/arch/aarch64/gic.rs - Early UART
kernel/src/early/uart.rs - MMIO access
kernel/src/arch/aarch64/mmio.rs
Memory Management
- Memory startup
kernel/src/sst/memory.rs - Physical allocator
kernel/src/mm/pmm.rs - Kernel heap
kernel/src/mm/heap.rs - Virtual memory
kernel/src/mm/vmm.rs - Task address spaces
kernel/src/mm/address_space.rs
ITAS Scheduler
- Task lifecycle
kernel/src/scheduler/queue.rs - Scheduling policy
kernel/src/scheduler/policy.rs - Tick enforcement
kernel/src/scheduler/tick.rs - Context switching
kernel/src/scheduler/context.rs - Scheduler observability
kernel/src/scheduler/trace.rs
Kernel Services
- Stage 2 orchestration
kernel/src/sst/mod.rs - Fault diagnostics
kernel/src/errors.rs - Drivers
kernel/src/sst/drivers.rs - Filesystem
kernel/src/sst/filesystem.rs - Security services
kernel/src/sst/security.rs
Other components
- AArch64 hardware
Connections 26
- AArch64 hardware → Boot entry: starts
- Boot entry → Board configuration: sets board
- Boot entry → Kernel startup: calls
- Board configuration → Early UART: provides UART base
- Early UART → MMIO access: accesses registers
- AArch64 hardware → Exception and IRQ handling: raises IRQs
- Exception and IRQ handling → GIC control: acknowledges IRQ
- Exception and IRQ handling → Tick enforcement: dispatches timer tick
- Kernel startup → Memory startup: initializes
- Memory startup → Physical allocator: uses allocator
- Memory startup → Kernel heap: initializes
- Memory startup → Virtual memory: initializes
- Virtual memory → Physical allocator: allocates tables
- Stage 2 orchestration → Task address spaces: initializes
- Stage 2 orchestration → Task lifecycle: initializes tasks
- Stage 2 orchestration → Drivers: runs
- Stage 2 orchestration → Filesystem: runs
- Stage 2 orchestration → Security services: runs
- Tick enforcement → Scheduling policy: requests decision
- Context switching → Scheduling policy: selects next task
- Scheduling policy → Task lifecycle: reads task state
- Context switching → Task address spaces: switches address space
- Context switching → Task lifecycle: switches task stacks
- Scheduler observability → Task lifecycle: reads task metrics
- Scheduler observability → Scheduling policy: reads score details
- Exception and IRQ handling → Fault diagnostics: fault handling