9#ifndef __OSAL_BITMAP_H__
10#define __OSAL_BITMAP_H__
18#define OSAL_BITS_PER_BYTE 8
19#define OSAL_BITS_PER_LONG (OSAL_BITS_PER_BYTE * sizeof(unsigned long))
20#define OSAL_BIT_MASK(nr) (1UL << ((nr) % OSAL_BITS_PER_LONG))
21#define OSAL_BIT_WORD(nr) ((nr) / OSAL_BITS_PER_LONG)
22#define OSAL_BITS_TO_LONGS(nr) (((nr) + (OSAL_BITS_PER_LONG)-1) / (OSAL_BITS_PER_LONG))
23#define OSAL_DECLARE_BITMAP(name, bits) unsigned long name[OSAL_BITS_TO_LONGS(bits)]
24#define osal_for_each_set_bit(bit, addr, size) \
25 for ((bit) = osal_bitmap_find_first_bit((addr), (size)); (bit) < (size); \
26 (bit) = osal_bitmap_find_next_bit((addr), (size), (bit) + 1))
28#define osal_for_each_clear_bit(bit, addr, size) \
29 for ((bit) = osal_bitmap_find_first_zero_bit((addr), (size)); (bit) < (size); \
30 (bit) = osal_bitmap_find_next_zero_bit((addr), (size), (bit) + 1))
int osal_bitmap_find_first_bit(const unsigned long *name, unsigned size)
find the first set bit in a memory region.
int osal_bitmap_test_and_clear_bit(int nr, unsigned long *addr)
Clear bit and return old value.
int osal_bitmap_test_and_change_bit(int nr, unsigned long *addr)
Change bit and return old value.
void osal_bitmap_clear_bit(int nr, unsigned long *addr)
Used to clear bit for bitmap.
int osal_bitmap_test_and_set_bit(int nr, unsigned long *addr)
Set bit and return old value.
int osal_bitmap_find_first_zero_bit(const unsigned long *name, unsigned size)
find the first cleared bit in a memory region.
void osal_bitmap_change_bit(int nr, unsigned long *addr)
Used to change bit for bitmap.
int osal_bitmap_find_next_zero_bit(const unsigned long *name, int size, int offset)
find the next cleared bit in a memory region.
int osal_bitmap_test_bit(int nr, unsigned long *addr)
Tests whether a given bit in an array of bits is set.
void osal_bitmap_set_bit(int nr, unsigned long *addr)
Used to set bit for bitmap.
int osal_bitmap_find_next_bit(const unsigned long *name, unsigned size, int offset)
find the next set bit in a memory region.