25 lines
935 B
Markdown
25 lines
935 B
Markdown
# FC10 — direct-to-task notifications
|
||
|
||
One receiver task exercises three notification contracts without a queue,
|
||
semaphore or EventGroup object:
|
||
|
||
- three `xTaskNotifyGive()` calls accumulate to
|
||
`ulTaskNotifyTake(pdTRUE)==3`;
|
||
- two `eSetValueWithOverwrite` posts retain the latest value `0x22`;
|
||
- two `eSetBits` posts combine to `0x24`.
|
||
|
||
The high-priority sender waits for an explicit receiver phase and public
|
||
`eBlocked` state before every batch. Therefore the receiver cannot run between
|
||
posts and accidentally turn `3` into `1+1+1`. A zero-time probe proves that
|
||
the slot value is cleared between protocols.
|
||
|
||
```sh
|
||
make task1 host-test check-abi sim check-determinism
|
||
```
|
||
|
||
The canonical Hazard3 run commits E01–E12 and prints digest `c60747cb`.
|
||
Interactive views A2, A3, A5, A6, A7 and A8 connect the target handle, TCB
|
||
slot, flow, state, runtime evidence and protocol choices.
|
||
|
||
Source basis: FreeRTOS Kernel Book, Chapter 10.
|