Sound Byte Libs 1ee2ca6
C++ firmware library for audio applications on 32-bit ARM Cortex-M processors
Loading...
Searching...
No Matches
Public Member Functions | List of all members
sbl::core::patterns::synchronization::CriticalSection Class Reference

ARM Cortex-M RAII critical section using PRIMASK. More...

#include <critical_section.hpp>

Collaboration diagram for sbl::core::patterns::synchronization::CriticalSection:

Public Member Functions

 CriticalSection ()
 Construct critical section and disable ARM interrupts.
 
 ~CriticalSection ()
 Destructor - restore ARM PRIMASK state.
 
 CriticalSection (const CriticalSection &)=delete
 
CriticalSectionoperator= (const CriticalSection &)=delete
 
 CriticalSection (CriticalSection &&)=delete
 
CriticalSectionoperator= (CriticalSection &&)=delete
 

Detailed Description

ARM Cortex-M RAII critical section using PRIMASK.

Disables all interrupts (except NMI/Hard Fault) using ARM PRIMASK register. Automatically restores interrupt state when object goes out of scope. Compiles to minimal ARM Thumb-2 instructions using CMSIS intrinsics.

Usage:

volatile uint32_t shared_counter = 0;
void increment_from_main() {
shared_counter++; // Safe from interrupt interference
} // Interrupts automatically restored here
ARM Cortex-M RAII critical section using PRIMASK.

Design principles:

Definition at line 43 of file critical_section.hpp.

Constructor & Destructor Documentation

◆ CriticalSection() [1/3]

sbl::core::patterns::synchronization::CriticalSection::CriticalSection ( )
inline

Construct critical section and disable ARM interrupts.

Saves current PRIMASK state and disables all interrupts except NMI and Hard Fault. Uses HAL interrupt primitives.

Definition at line 51 of file critical_section.hpp.

◆ ~CriticalSection()

sbl::core::patterns::synchronization::CriticalSection::~CriticalSection ( )
inline

Destructor - restore ARM PRIMASK state.

Restores PRIMASK to state before critical section was entered. Guarantees proper interrupt restoration even in error conditions.

Definition at line 60 of file critical_section.hpp.

References sbl::core::hal::interrupts::restore().

Here is the call graph for this function:

◆ CriticalSection() [2/3]

sbl::core::patterns::synchronization::CriticalSection::CriticalSection ( const CriticalSection )
delete

◆ CriticalSection() [3/3]

sbl::core::patterns::synchronization::CriticalSection::CriticalSection ( CriticalSection &&  )
delete

Member Function Documentation

◆ operator=() [1/2]

CriticalSection & sbl::core::patterns::synchronization::CriticalSection::operator= ( const CriticalSection )
delete

◆ operator=() [2/2]

CriticalSection & sbl::core::patterns::synchronization::CriticalSection::operator= ( CriticalSection &&  )
delete

The documentation for this class was generated from the following file: