bitmap.h 677 B

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