fix critical section
This commit is contained in:
parent
aa16f093b1
commit
37cec353ec
@ -17,11 +17,15 @@ typedef enum {
|
||||
#define CRITICAL_SECTION_ENTER(counter) do { __disable_irq(); } while(0)
|
||||
#define CRITICAL_SECTION_EXIT(counter) ({do { if (primask_##counter) __enable_irq(); } while(0);})
|
||||
|
||||
#define CRITICAL_SECTION() /* \
|
||||
CRITICAL_SECTION_VAR(__COUNTER__); \
|
||||
#define _CRITICAL_SECTION_IMPL(counter) \
|
||||
CRITICAL_SECTION_VAR(counter); \
|
||||
asm volatile ("dmb"); \
|
||||
CRITICAL_SECTION_ENTER(__COUNTER__); \
|
||||
for(int _cs_flag_##__COUNTER__ = 1; _cs_flag_##__COUNTER__; _cs_flag_##__COUNTER__ = 0, CRITICAL_SECTION_EXIT(__COUNTER__)) */
|
||||
CRITICAL_SECTION_ENTER(counter); \
|
||||
for(int _cs_flag_##counter = 1; _cs_flag_##counter; _cs_flag_##counter = 0, CRITICAL_SECTION_EXIT(counter))
|
||||
|
||||
#define CRITICAL_SECTION_IMPL(counter) _CRITICAL_SECTION_IMPL(counter)
|
||||
|
||||
#define CRITICAL_SECTION() CRITICAL_SECTION_IMPL(__COUNTER__)
|
||||
|
||||
[[maybe_unused, gnu::always_inline]]
|
||||
static inline void mcuAdbmsCSLow() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user