xinu/galileoNotes ↗

Bare metal · x86 · 2026

A teaching kernel, six subsystems deep, on real hardware

Six subsystems built on the XINU teaching kernel, booted on an Intel Galileo board and driven over a serial console.

Xinu for galileo -- version #2 (Irfan Firosh) Sun Sep 13 02:36:44 AM EDT 2026
Ethernet Link is Up
233393696 bytes of free memory. Free list:
[0x011451E0 to 0x0EFD8FFF]
[0x0FDEF000 to 0x0FDEFFFF]
116557 bytes of Xinu code.
[0x00100000 to 0x0011C74C]
16817640 bytes of data.
[0x00120200 to 0x01129FE7]
=== process management ===
main() runs as pid 3, parent state 2
=== garbage collection ===
gc_getmem returned 011451E0; leaving it unfreed
kill() will reclaim it when this process exits
=== producer-consumer ===
consumer received: HELLO XINU
Hello World!
At 500 ms since bootload, no deadlock is detected.
At 1000 ms since bootload, no deadlock is detected.
=== dynamic priority scheduling ===
At 1500 ms since bootload, no deadlock is detected.
At 2000 ms since bootload, no deadlock is detected.
At 2500 ms since bootload, no deadlock is detected.
At 3000 ms since bootload, no deadlock is detected.
At 3500 ms since bootload, no deadlock is detected.
At 4000 ms since bootload, no deadlock is detected.
At 4500 ms since bootload, no deadlock is detected.
At 5000 ms since bootload, no deadlock is detected.
At 5500 ms since bootload, no deadlock is detected.
At 6000 ms since bootload, no deadlock is detected.
At 6500 ms since bootload, no deadlock is detected.
At 7000 ms since bootload, no deadlock is detected.
PID 6 CPU-bound clkcounterms=7032 cpu=372 PID 7 CPU-bounavgresp=17 prid clkcountermso=1
=7077 cpu=374 avgresp=17 prio=1
PID 8 I/O-bound clkcounterms=7129 cpu=0 avgresp=1 prio=8
PID 9 I/O-bound clkcounterms=7133 cpu=0 avgresp=1 prio=8
PID 10 Sneaky clkcounterms=7141 cpu=5350 avgresp=1 prio=8
At 7500 ms since bootload, no deadlock is detected.
At 8000 ms since bootload, no deadlock is detected.
At 8500 ms since bootload, no deadlock is detected.
At 9000 ms since bootload, no deadlock is detected.
=== demo complete ===
At 9500 ms since bootload, no deadlock is detected.
At 10000 ms since bootload, no deadlock is detected.
At 10500 ms since bootload, no deadlock is detected.

Serial capture on an Intel Galileo board.

01

Process management

A second creation path changes where a process lands when its top-level function returns.

02

Scheduling

Priority follows behaviour: burn a whole time slice and you are demoted, block early and you are promoted.

03

Deadlock detection

Semaphore ownership and waiting are kept as a graph, and the clock handler walks it for cycles every 500 ms.

04

Garbage collection

Every allocation is charged to the process that made it, and kill() reclaims whatever it never freed.

05

Filesystem

A file offset resolves through direct blocks and then one, two or three levels of indirection.