bb9707077b
We use it in bitops/__ffs.h and bitops/atomic.h, that we also got from the kernel, but were getting it from either newer systems that carry it in /usr/include, or from the kernel sources, that we decided not to touch from tools/ code. Fix it. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-lwqvgbuitjmrdpjmjp6zqnyx@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
24 lines
645 B
C
24 lines
645 B
C
#ifndef _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_
|
|
#define _TOOLS_LINUX_ASM_GENERIC_BITOPS_ATOMIC_H_
|
|
|
|
#include <asm/types.h>
|
|
#include <asm/bitsperlong.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_ */
|