#ifndef _BITMAP_H #define _BITMAP_H #include #define BLOCK_SIZE 4096 #define BMAP_NOT_FOUND ((size_t)-1) typedef struct bitmap_t { void* map; size_t blocks; // Eqiv. to # of bits size_t bytes; // ceil(blocks / 8) size_t used; // # of bits set to 0 size_t membase; // Used with allocators int ready; } bitmap_t; void* bmap_ptr(bitmap_t* map, size_t bit); void bmap_set(bitmap_t* map, size_t bit, int val); int bmap_get(bitmap_t* map, size_t bit); void bmap_set_area(bitmap_t* map, size_t base, size_t len, int val); size_t bmap_get_area(bitmap_t* map, size_t len, int val); void bmap_set_all(bitmap_t* map, int val); #endif