WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
osal_bitmap.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2021-2022. All rights reserved.
3 * Description: OS Abstract Layer.
4 */
5
9#ifndef __OSAL_BITMAP_H__
10#define __OSAL_BITMAP_H__
11
12#ifdef __cplusplus
13#if __cplusplus
14extern "C" {
15#endif
16#endif
17
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))
27
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))
31
45void osal_bitmap_set_bit(int nr, unsigned long *addr);
46
60void osal_bitmap_clear_bit(int nr, unsigned long *addr);
61
75void osal_bitmap_change_bit(int nr, unsigned long *addr);
76
92int osal_bitmap_test_bit(int nr, unsigned long *addr);
93
109int osal_bitmap_test_and_set_bit(int nr, unsigned long *addr);
110
126int osal_bitmap_test_and_clear_bit(int nr, unsigned long *addr);
127
143int osal_bitmap_test_and_change_bit(int nr, unsigned long *addr);
144
160int osal_bitmap_find_first_zero_bit(const unsigned long *name, unsigned size);
161
177int osal_bitmap_find_first_bit(const unsigned long *name, unsigned size);
178
195int osal_bitmap_find_next_zero_bit(const unsigned long *name, int size, int offset);
196
213int osal_bitmap_find_next_bit(const unsigned long *name, unsigned size, int offset);
214
215#ifdef __cplusplus
216#if __cplusplus
217}
218#endif
219#endif
220#endif /* __OSAL_BITMAP_H__ */
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.