stdbitmap.h#
stdbitmap.h是X2W-OS的标准位图实现
- 待办事项:
测试stdbitmap库
- Author
Shihong Wang (jack4shihong@gmail.com)
- Version
0.1
- Date
2023-04-13
- Copyright
Copyright Shihong Wang (c) 2023 with GNU Public License V3.0
Typedefs
-
typedef struct __bitmap_t bitmap_t#
bitmap_t是位图结构体Note
bitmap用于管理大量资源, 若对应位为1, 则表示该资源已经被占用; 若对应位位0, 则表示该资源未被占用
Functions
-
void bitmap_init(bitmap_t *btmp_ptr, size_t size)#
bitmap_init用于初始化btmp_ptr指向的位图- Parameters:
btmp_ptr – 指向需要初始化的位图的指针
size – 位图的字节数
-
void bitmap_set(bitmap_t *btmp_ptr, offset_t bit_idx, Bool taken)#
bitmap_set用于设置btmp_ptr指向的位图中偏移量为bit_idx的位- Parameters:
btmp_ptr – 指向被设置的位图的指针
bit_idx – 需要设置的位在位图中的偏移
taken – 若为True, 则将位设置为1, 表示资源被占用; 若为False, 则将位设置为0, 表示资源没有没占用
-
Bool bitmap_test(bitmap_t *btmp_ptr, offset_t bit_idx)#
bitmap_test用于测试btmp_ptr指向的位图中bit_idx位是否被占用- Parameters:
btmp_ptr – 指向需要测试的位图的指针
bit_idx – 需要测试的位的偏移
- Returns:
True 测试的位已经被占用
- Returns:
False 测试的位未被占用
-
offset_t bitmap_scan(bitmap_t *btmp_ptr, size_t cnt)#
bitmap_scan用于向btmp_ptr指向的位图中循找连续cnt个空闲位/资源Note
bitmap_scan只会寻找位, 不会设置位- Parameters:
btmp_ptr – 指向被检查的位图
cnt – 连续位数
- Returns:
offset_t 若不存在连续
cnt个位, 则返回-1; 若存在则返回起始位的偏移
-
Bool bitmap_acquire(bitmap_t *btmp_ptr, offset_t out[], size_t cnt)#
bitmap_acquire会从btmp_ptr指向的位图中申请cnt个位/资源, 得到的位的偏移将会放到数组out中Note
bitmap_acquire找到位后会设置位Warning
bitmap_acquire不会管理out是否会溢出, 需要调用者负责管理out的大小- Parameters:
btmp_ptr – 指向被申请资源所在的位图
out – 存放得到的位的偏移的数组
cnt – 需要申请的资源数
- Returns:
True 申请成功,
out会存放申请得到的位- Returns:
False 申请失败,
out会被填充为 -1
-
struct __bitmap_t#
- #include <stdbitmap.h>
bitmap_t是位图结构体Note
bitmap用于管理大量资源, 若对应位为1, 则表示该资源已经被占用; 若对应位位0, 则表示该资源未被占用