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.
Modules
Section titled “Modules”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— Thenvspartition, 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).
Macros
Section titled “Macros”flint_app
Section titled “flint_app”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.
println
Section titled “println”macro_rules! println { () => { ... }; ($($arg:tt)*) => { ... };}Print a formatted string with a newline.