40 #ifndef CORTEX_M_SYNCHRONIZATION_H_
41 #define CORTEX_M_SYNCHRONIZATION_H_
70 static inline void exclusive_increment(
volatile uint32_t* value) {
75 tmp = __LDREXW(value);
81 status = __STREXW(tmp, value);
82 }
while (status != 0);
87 static inline void exclusive_decrement(
volatile uint32_t* value) {
92 tmp = __LDREXW(value);
98 status = __STREXW(tmp, value);
99 }
while (status != 0);
int lock_try_acquire(lock_t *Lock_Variable)
Non-blocking access to lock variable.
void lock_release(lock_t *Lock_Variable)
Release a lock after having acquired it using lock_acquire or lock_try_acquire.
void lock_acquire(lock_t *Lock_Variable)
Blocking access to lock variable.
CMSIS Cortex-M Core Instruction Access Header File.
volatile uint8_t lock_t
Lock variable typedef.