#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