bitmap.c 378 B

12345678910111213141516171819202122
  1. #include <types/bitmap.h>
  2. #define SZ (8)
  3. size_t make_bm_size(size_t n)
  4. {
  5. return sizeof(size_t) + (n / SZ) + ((n % SZ) ? 1 : 0);
  6. }
  7. int bm_test(uint8_t* bm, size_t n)
  8. {
  9. return (bm[n / SZ] & (1 << (n % SZ))) != 0;
  10. }
  11. void bm_set(uint8_t* bm, size_t n)
  12. {
  13. bm[n / SZ] |= (1 << (n % SZ));
  14. }
  15. void bm_clear(uint8_t* bm, size_t n)
  16. {
  17. bm[n / SZ] &= (~(1 << (n % SZ)));
  18. }