[][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.