#ifndef __BITMAP_H__ #define __BITMAP_H__ #ifndef HOST_LONG_BITS #define HOST_LONG_BITS (sizeof(long) * 8) #endif #define bitmap_isset(bm,bit) \ (!!bm[(bit) / HOST_LONG_BITS] & (1ULL << ((bit) % HOST_LONG_BITS))) #define bitmap_set(bm,bit) \ (bm[(bit) / HOST_LONG_BITS] |= (1ULL << ((bit) % HOST_LONG_BITS))) #define bitmap_unset(bm,bit) \ (bm[(bit) / HOST_LONG_BITS] &= ~(1ULL << ((bit) % HOST_LONG_BITS))) #define DECLARE_BITMAP(bm,len) \ unsigned long bm[((len) + HOST_LONG_BITS - 1) / HOST_LONG_BITS] #define bitmap_clear(bm,len) \ memset(bm, 0, (len + 7) / 8) #define bitmap_fill(bm,len) \ memset(bm, 0xFF, (len + 7) / 8) #endif