radio_esp32::adapter::calls
How often the blob has used the entries its start path leans on.
libpp arms the MAC’s receive interrupt only once it has decided receive
should be on, and it is not reaching that decision — see
doc/plan-radio.md. A branch it takes silently is invisible from here, but
the calls it makes on the way are not: an entry that never fires, or
fires far fewer times than the ones around it, is the shadow of the branch
that was not taken.
Only the entries that carry the start path, not all 115. Allocation,
because a descriptor ring that fails an internal check is skipped without
a word; the queue and semaphore pairs, because that is how pp_task moves
between states; and the two context predicates, because the blob guards
raw register writes on them and a wrong answer there is exactly a
hardware-write that never happens.
Functions
Section titled “Functions”fn get(which: usize) -> u32The count for which.
Constants
Section titled “Constants”CALLOC
Section titled “CALLOC”const CALLOC: usize;ENV_IS_CHIP
Section titled “ENV_IS_CHIP”const ENV_IS_CHIP: usize;EVENT_POST
Section titled “EVENT_POST”const EVENT_POST: usize;const FREE: usize;IS_FROM_ISR
Section titled “IS_FROM_ISR”const IS_FROM_ISR: usize;MALLOC
Section titled “MALLOC”const MALLOC: usize;const N: usize;const NAMES: [&str; 14];In the same order as the constants above.
QUEUE_CREATE
Section titled “QUEUE_CREATE”const QUEUE_CREATE: usize;QUEUE_RECV
Section titled “QUEUE_RECV”const QUEUE_RECV: usize;QUEUE_SEND
Section titled “QUEUE_SEND”const QUEUE_SEND: usize;SEMPHR_CREATE
Section titled “SEMPHR_CREATE”const SEMPHR_CREATE: usize;SEMPHR_GIVE
Section titled “SEMPHR_GIVE”const SEMPHR_GIVE: usize;SEMPHR_TAKE
Section titled “SEMPHR_TAKE”const SEMPHR_TAKE: usize;TASK_CREATE
Section titled “TASK_CREATE”const TASK_CREATE: usize;TIMER_ARM
Section titled “TIMER_ARM”const TIMER_ARM: usize;