2 * Copyright (c) 2007-2008 Atheros Communications, Inc.
8 #include "adf_os_types.h"
9 #include "adf_os_mem.h"
13 typedef a_uint8_t * asf_bitmap_t;
15 /* Bit map related macros. */
16 // setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
17 // clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
18 // isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
19 // isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
21 #define asf_howmany(x, y) (((x)+((y)-1))/(y))
22 #define asf_roundup(x, y) ((((x)+((y)-1))/(y))*(y))
25 static inline a_uint8_t *
26 asf_bitmap_alloc(int sz_bits)
29 int sz_bytes = sz_bits / ASF_BYTESZ;
31 bm = adf_os_mem_alloc(sz_bytes);
35 adf_os_mem_zero(bm, sz_bytes);
40 asf_bitmap_free(a_uint8_t *bm)
46 asf_bitmap_setbit(a_uint8_t *bm, int pos)
48 bm[pos / ASF_BYTESZ] |= 1 << (pos % ASF_BYTESZ);
53 asf_bitmap_clrbit(a_uint8_t *bm, int pos)
55 bm[pos / ASF_BYTESZ] &= ~(1 << (pos % ASF_BYTESZ));
58 static inline a_bool_t
59 asf_bitmap_isset(a_uint8_t *bm, int pos)
61 return bm[pos / ASF_BYTESZ] & (1 << (pos % ASF_BYTESZ));
64 static inline a_bool_t
65 asf_bitmap_isclr(a_uint8_t *bm, int pos)
67 return ((bm[pos / ASF_BYTESZ] & (1 << (pos % ASF_BYTESZ))) == 0);
70 #endif /* _ASF_BITMAP_H */