diff --git a/components/f4ll/inc/irqlock.h b/components/f4ll/inc/irqlock.h new file mode 100644 index 0000000..a2cda22 --- /dev/null +++ b/components/f4ll/inc/irqlock.h @@ -0,0 +1,27 @@ +#ifndef _IRQLOCK_H_INCLUDED +#define _IRQLOCK_H_INCLUDED + +#include +#include + +namespace f4ll { + +class IrqLock { +public: + inline IrqLock() : m_primask(__get_PRIMASK()) { + __disable_irq(); + } + inline void Release() { + __set_PRIMASK(m_primask); + } + + inline ~IrqLock() { + __set_PRIMASK(m_primask); + } +private: + uint32_t m_primask; +}; + +} + +#endif // _IRQLOCK_H_INCLUDED