diff options
Diffstat (limited to 'kernel/tools/include/asm-generic/bitops/atomic.h')
-rw-r--r-- | kernel/tools/include/asm-generic/bitops/atomic.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/tools/include/asm-generic/bitops/atomic.h b/kernel/tools/include/asm-generic/bitops/atomic.h new file mode 100644 index 000000000..4bccd7c3d --- /dev/null +++ b/kernel/tools/include/asm-generic/bitops/atomic.h @@ -0,0 +1,22 @@ +#ifndef _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_ +#define _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_ + +#include <asm/types.h> + +static inline void set_bit(int nr, unsigned long *addr) +{ + addr[nr / __BITS_PER_LONG] |= 1UL << (nr % __BITS_PER_LONG); +} + +static inline void clear_bit(int nr, unsigned long *addr) +{ + addr[nr / __BITS_PER_LONG] &= ~(1UL << (nr % __BITS_PER_LONG)); +} + +static __always_inline int test_bit(unsigned int nr, const unsigned long *addr) +{ + return ((1UL << (nr % __BITS_PER_LONG)) & + (((unsigned long *)addr)[nr / __BITS_PER_LONG])) != 0; +} + +#endif /* _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_ */ |