31#ifndef _UTIL_ATOMIC_H_
32#define _UTIL_ATOMIC_H_ 1
37#if !defined(__DOXYGEN__)
39static __inline__
uint8_t __iSeiRetVal(
void)
45static __inline__
uint8_t __iCliRetVal(
void)
51static __inline__
void __iSeiParam(
const uint8_t *__s)
54 __asm__
volatile (
"" :::
"memory");
58static __inline__
void __iCliParam(
const uint8_t *__s)
61 __asm__
volatile (
"" :::
"memory");
65static __inline__
void __iRestore(
const uint8_t *__s)
68 __asm__
volatile (
"" :::
"memory");
203#if defined(__DOXYGEN__)
204#define ATOMIC_BLOCK(type)
206#define ATOMIC_BLOCK(type) for ( type, __ToDo = __iCliRetVal(); \
207 __ToDo ; __ToDo = 0 )
224#if defined(__DOXYGEN__)
225#define NONATOMIC_BLOCK(type)
227#define NONATOMIC_BLOCK(type) for ( type, __ToDo = __iSeiRetVal(); \
228 __ToDo ; __ToDo = 0 )
242#if defined(__DOXYGEN__)
243#define ATOMIC_RESTORESTATE
245#define ATOMIC_RESTORESTATE uint8_t sreg_save \
246 __attribute__((__cleanup__(__iRestore))) = SREG
264#if defined(__DOXYGEN__)
265#define ATOMIC_FORCEON
267#define ATOMIC_FORCEON uint8_t sreg_save \
268 __attribute__((__cleanup__(__iSeiParam))) = 0
282#if defined(__DOXYGEN__)
283#define NONATOMIC_RESTORESTATE
285#define NONATOMIC_RESTORESTATE uint8_t sreg_save \
286 __attribute__((__cleanup__(__iRestore))) = SREG
304#if defined(__DOXYGEN__)
305#define NONATOMIC_FORCEOFF
307#define NONATOMIC_FORCEOFF uint8_t sreg_save \
308 __attribute__((__cleanup__(__iCliParam))) = 0
#define cli()
Definition: interrupt.h:88
#define sei()
Definition: interrupt.h:74
unsigned char uint8_t
Definition: stdint.h:81