| 12345678910111213141516171819202122 |
- #ifndef __LIB_KERNEL_BITMAP_H
- #define __LIB_KERNEL_BITMAP_H
- #include "../../kernel/global.h"
- #define BITMAP_MASK 1
- typedef struct bitmap
- {
- uint32_t btmp_bytes_len; // 位图字节长度
- uint8_t *bits; // 位图的指针
- } __attribute__((packed)) Bitmap;
- // 初始化位图
- void bitmap_init(Bitmap *pb);
- // 判断位图中bit_idx位是否为1
- bool bitmap_scan_test(Bitmap *pb, uint32_t bit_idx);
- // 在位图中申请连续cnt个位,成功则返回起始位下标,失败返回-1
- int bitmap_scan(Bitmap *pb, uint32_t cnt);
- // 将位图pb的bit_idx位设置为value
- void bitmap_set(Bitmap *pb, uint32_t bit_idx, int8_t value);
- #endif // __LIB_KERNEL_BITMAP_H
|