Real-time scheduling
Preemptive priority scheduling with round-robin per priority. Deterministic selection using a priority bitmap and the Cortex-M CLZ instruction.
Rhythm engine for real-time audio processing on STM32. Lightweight, preemptive, deterministic — built for low-latency audio/control systems where timing is the product.
Compact on purpose. Static-friendly. Designed around predictable scheduling and fast ISR-to-task signaling.
Audio synthesizers, effects processors, drum machines — and any embedded application that needs precise, low-jitter real-time behavior with minimal runtime overhead.
Preemptive priority scheduling with round-robin per priority. Deterministic selection using a priority bitmap and the Cortex-M CLZ instruction.
Mutex locks with priority inheritance to prevent unbounded priority inversion — critical for real-time audio.
Callback-based timers for periodic or one-shot events. User-allocated (no malloc) for deterministic memory. Callbacks run in ISR context — keep them short.
32-bit per-task flags with ANY/ALL wait modes. Blocking / non-blocking / timeout waits. ISR-safe signaling with optional auto-clear for one-shot events.
Fixed-size bounded ring buffers. Lock-free fast paths for single producer/consumer. ISR-safe enqueue/dequeue variants for real-time pipelines.
ISRs never block and don’t touch ready queues. Atomic flag-based communication keeps interrupt overhead minimal.
Circular doubly-linked ready queues for O(1) enqueue/dequeue. Debugger-friendly inspection variables and built-in breakpoints for hard failures. The goal is a codebase you can reason about at 3am on a bench.