[−][src]Module clint::cs
Critical Section support.
Types that implement the CriticalSection
trait can be used to
create critical sections to prevent data races between interrupt
and non-interrupt contexts.
Note
Critical sections are only acquired for updating a
HandlerTable
's entries. They are not used when calling into a
closure. This is because the expected implementation of critical
sections turns off interrupts entirely. Given that interrupts are
off, it is impossible to call an ISR, and thus no data race can
occur. Additionally, because critcal sections are only enforced on
updates, deadlock is impossible between updating a HandlerTable
entry and calling into it.
However, if you are going to implement your own CriticalSection
,
you need to be aware of this limitation and its rationale to avoid
getting into trouble.
Structs
Locker |
Traits
CriticalSection | Generic trait which supplies the ability to create a critical section. |