34 #ifndef _UTIL_ATOMIC_H_
35 #define _UTIL_ATOMIC_H_ 1
40 #if !defined(__DOXYGEN__)
42 static __inline__
uint8_t __iSeiRetVal(
void)
48 static __inline__
uint8_t __iCliRetVal(
void)
54 static __inline__
void __iSeiParam(
const uint8_t *__s)
57 __asm__
volatile (
"" :::
"memory");
61 static __inline__
void __iCliParam(
const uint8_t *__s)
64 __asm__
volatile (
"" :::
"memory");
68 static __inline__
void __iRestore(
const uint8_t *__s)
71 __asm__
volatile (
"" :::
"memory");
202 #if defined(__DOXYGEN__)
203 #define ATOMIC_BLOCK(type)
205 #define ATOMIC_BLOCK(type) for ( type, __ToDo = __iCliRetVal(); \
206 __ToDo ; __ToDo = 0 )
223 #if defined(__DOXYGEN__)
224 #define NONATOMIC_BLOCK(type)
226 #define NONATOMIC_BLOCK(type) for ( type, __ToDo = __iSeiRetVal(); \
227 __ToDo ; __ToDo = 0 )
241 #if defined(__DOXYGEN__)
242 #define ATOMIC_RESTORESTATE
244 #define ATOMIC_RESTORESTATE uint8_t sreg_save \
245 __attribute__((__cleanup__(__iRestore))) = SREG
262 #if defined(__DOXYGEN__)
263 #define ATOMIC_FORCEON
265 #define ATOMIC_FORCEON uint8_t sreg_save \
266 __attribute__((__cleanup__(__iSeiParam))) = 0
280 #if defined(__DOXYGEN__)
281 #define NONATOMIC_RESTORESTATE
283 #define NONATOMIC_RESTORESTATE uint8_t sreg_save \
284 __attribute__((__cleanup__(__iRestore))) = SREG
301 #if defined(__DOXYGEN__)
302 #define NONATOMIC_FORCEOFF
304 #define NONATOMIC_FORCEOFF uint8_t sreg_save \
305 __attribute__((__cleanup__(__iCliParam))) = 0
#define sei()
Definition: interrupt.h:79
#define cli()
Definition: interrupt.h:97
unsigned char uint8_t
Definition: stdint.h:83