# FC08 — mutexes and priority inheritance This card is a deterministic Hazard3/RV32I experiment for Chapter 8 of the FreeRTOS Kernel Book. It proves the mechanism, not only the final value. ```text Low p1 owns mutex → High p3 blocks on the mutex → Low effective priority becomes 3 → Medium p2 is Ready but does not run → Low gives the mutex → High acquires before Medium runs → Low returns to priority 1 ``` Only public FreeRTOS APIs are used for acceptance assertions. The internal `uxBasePriority` and `uxPriority` fields are shown as debugger evidence, not as application dependencies. No manual `vTaskPrioritySet` substitutes for priority inheritance. ## Build and evidence ```sh make task1 make host-test make check-abi make sim make check-determinism ``` The final verifier checks the real mutex holder, effective priorities, public task state, three distinct task stacks, protected-resource invariant, exact event order and a stable digest from three clean simulator processes. ## Interactive views - A2 — mutex, owner, waiters and protected resource; - A4 — deterministic task topology; - A5 — complete inheritance and hand-off sequence; - A6 — mutex ownership and effective-priority states; - A7 — handles, stacks, public observations and TCB debugger evidence; - A8 — critical section, scheduler suspension, mutex and gatekeeper choices. Source basis: FreeRTOS Kernel Book, Chapter 8. No source example is copied verbatim.