API接口
/**
* 功能:初始化位图
* 参数 max_bit: 最大的位数
*/
STATUS bitmap_init( uint32_t max_bit );
/**
* 功能:将指定的位置为1
* 参数 number: 指定的位, 从第0位开始
*/
STATUS bitmap_set_bit( uint32_t number );
/**
* 功能:获取将指定的位置为值
* 参数 number: 指定的位, 从第0位开始
*/
STATUS bitmap_get_bit( uint32_t number, bool *pBit );
具体实现:
uint8_t *g_bitmap = 0;
uint32_t g_max_bit = 0;
#define SET_BIT( value, bit ) \
(value) = ((value) | ( 1 << (bit) ))
#define GET_BIT(value, bit ) \
((((value) >> (bit)) & 1))
#define GET_BYTE_IDX( number ) \
((uint32_t)( (number) >> 3 ))
#define GET_BIT_IDX( number ) \
(uint8_t)( (number) - (GET_BYTE_IDX(number) << 3) )
STATUS bitmap_init( uint32_t max_bit ) {
g_bitmap = (uint8_t*)malloc(GET_BYTE_IDX(max_bit) + 1)