1#ifndef SBL_CORE_PATTERNS_SYNCHRONIZATION_CRITICAL_SECTION_HPP_
2#define SBL_CORE_PATTERNS_SYNCHRONIZATION_CRITICAL_SECTION_HPP_
13#include <sbl/core/hal/interrupts/control.hpp>
18namespace synchronization {
73 const uint32_t saved_primask_;
90#define CRITICAL_SECTION \
91 if (auto cs = sbl::core::patterns::synchronization::CriticalSection(); true)
ARM Cortex-M RAII critical section using PRIMASK.
CriticalSection & operator=(const CriticalSection &)=delete
CriticalSection(const CriticalSection &)=delete
CriticalSection & operator=(CriticalSection &&)=delete
CriticalSection(CriticalSection &&)=delete
CriticalSection()
Construct critical section and disable ARM interrupts.
~CriticalSection()
Destructor - restore ARM PRIMASK state.
void restore(uint32_t saved_state)
Restore ARM interrupt state.
Root namespace for all Sound Byte Libs functionality.