aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLiam Murphy <[email protected]>2021-07-05 17:42:43 +1000
committerLiam Murphy <[email protected]>2021-07-05 17:42:43 +1000
commit744e2cbb8a0b58eccf3a9708c8c28f1ef17e4771 (patch)
treee288df991575c86e5079bdb33b7c1fd7888e96cb /examples
parented83b93b6dd34cf09d1f772ec32ebd036e8798a7 (diff)
extras: Fix UB in `Peripheral`
`Peripheral` assumed that interrupts can't be preempted, when they can be preempted by higher priority interrupts. So I put the interrupt handler inside a critical section, and also added checks for whether the state had been dropped before the critical section was entered. I also added a `'static` bound to `PeripheralState`, since `Pin` only guarantees that the memory it directly references will not be invalidated. It doesn't guarantee that memory its pointee references also won't be invalidated. There were already some implementations of `PeripheralState` that weren't `'static`, though, so I added an unsafe `PeripheralStateUnchecked` trait and forwarded the `unsafe` to the constructors of the implementors.
Diffstat (limited to 'examples')
0 files changed, 0 insertions, 0 deletions