Skip to content

kernel

The FlintOS kernel.

This crate is a library, not a binary. A FlintOS application is the binary: it links this crate, names an entry point with [flint_app!], and spawns its own tasks. See apps/ for worked examples and apps/README.md for how to start one of your own.

  • alarm — A one-shot alarm at an absolute microsecond deadline.
  • arch — The seam between the kernel’s logic and the machine underneath it.
  • board — Board manifest integration.
  • clock — A monotonic microsecond clock.
  • debug — Debug and diagnostics subsystem.
  • dma_broker — DMA Broker (Phase 3).
  • dynobj — Runtime-created kernel objects, for the radio blobs.
  • heap — The radio heap: which memory it gets, and which flavour it hands back.
  • interrupt — Interrupt routing framework (plan W6.2).
  • mutex — Kernel-side priority-inheritance mutex (plan W3.2, W3.5, W4).
  • nvs — The nvs partition, as a key/value store.
  • power — Power management: sleep, and reconciling the kernel tick on wake.
  • queue — Kernel-side queue waiter management (plan W4).
  • radio — Which radios this build uses, and whether the board has them.
  • scheduler — Preemptive priority scheduler.
  • smp — Mutual exclusion between cores.
  • spawn — Task creation and stack allocation (plan W1.3, W0.1).
  • startup — Boot startup — board initialisation, driver setup.
  • syscall — Kernel dispatch ABI (plan W5.1, Option A).
  • timer — Timer subsystem: sleep and one-shot/periodic callbacks (plan W1, W3.5).
macro_rules! flint_app {
($main:path, abi = $abi:literal) => { ... };
($main:path) => { ... };
}

Declare the function this image runs after architecture reset setup.

macro_rules! print {
($($arg:tt)*) => { ... };
}

Print a formatted string to the console.

macro_rules! println {
() => { ... };
($($arg:tt)*) => { ... };
}

Print a formatted string with a newline.