atomic.h 616 B

12345678910111213141516171819202122
  1. #ifndef _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_
  2. #define _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_
  3. #include <asm/types.h>
  4. static inline void set_bit(int nr, unsigned long *addr)
  5. {
  6. addr[nr / __BITS_PER_LONG] |= 1UL << (nr % __BITS_PER_LONG);
  7. }
  8. static inline void clear_bit(int nr, unsigned long *addr)
  9. {
  10. addr[nr / __BITS_PER_LONG] &= ~(1UL << (nr % __BITS_PER_LONG));
  11. }
  12. static __always_inline int test_bit(unsigned int nr, const unsigned long *addr)
  13. {
  14. return ((1UL << (nr % __BITS_PER_LONG)) &
  15. (((unsigned long *)addr)[nr / __BITS_PER_LONG])) != 0;
  16. }
  17. #endif /* _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_ */