Lines Matching refs:b

52 bitmap_free(struct bitmap *b)  in bitmap_free()  argument
54 if (b != NULL && b->d != NULL) { in bitmap_free()
55 bitmap_zero(b); in bitmap_free()
56 free(b->d); in bitmap_free()
57 b->d = NULL; in bitmap_free()
59 free(b); in bitmap_free()
63 bitmap_zero(struct bitmap *b) in bitmap_zero() argument
65 memset(b->d, 0, b->len * BITMAP_BYTES); in bitmap_zero()
66 b->top = 0; in bitmap_zero()
70 bitmap_test_bit(struct bitmap *b, u_int n) in bitmap_test_bit() argument
72 if (b->top >= b->len) in bitmap_test_bit()
74 if (b->len == 0 || (n / BITMAP_BITS) > b->top) in bitmap_test_bit()
76 return (b->d[n / BITMAP_BITS] >> (n & BITMAP_WMASK)) & 1; in bitmap_test_bit()
80 reserve(struct bitmap *b, u_int n) in reserve() argument
85 if (b->top >= b->len || n > BITMAP_MAX) in reserve()
88 if (b->len < nlen) { in reserve()
89 if ((tmp = recallocarray(b->d, b->len, in reserve()
92 b->d = tmp; in reserve()
93 b->len = nlen; in reserve()
99 bitmap_set_bit(struct bitmap *b, u_int n) in bitmap_set_bit() argument
104 if ((r = reserve(b, n)) != 0) in bitmap_set_bit()
107 if (offset > b->top) in bitmap_set_bit()
108 b->top = offset; in bitmap_set_bit()
109 b->d[offset] |= (BITMAP_WTYPE)1 << (n & BITMAP_WMASK); in bitmap_set_bit()
115 retop(struct bitmap *b) in retop() argument
117 if (b->top >= b->len) in retop()
119 while (b->top > 0 && b->d[b->top] == 0) in retop()
120 b->top--; in retop()
124 bitmap_clear_bit(struct bitmap *b, u_int n) in bitmap_clear_bit() argument
128 if (b->top >= b->len || n > BITMAP_MAX) in bitmap_clear_bit()
131 if (offset > b->top) in bitmap_clear_bit()
133 b->d[offset] &= ~((BITMAP_WTYPE)1 << (n & BITMAP_WMASK)); in bitmap_clear_bit()
135 retop(b); in bitmap_clear_bit()
139 bitmap_nbits(struct bitmap *b) in bitmap_nbits() argument
144 retop(b); in bitmap_nbits()
145 if (b->top >= b->len) in bitmap_nbits()
147 if (b->len == 0 || (b->top == 0 && b->d[0] == 0)) in bitmap_nbits()
150 w = b->d[b->top]; in bitmap_nbits()
151 bits = (b->top + 1) * BITMAP_BITS; in bitmap_nbits()
160 bitmap_nbytes(struct bitmap *b) in bitmap_nbytes() argument
162 return (bitmap_nbits(b) + 7) / 8; in bitmap_nbytes()
166 bitmap_to_string(struct bitmap *b, void *p, size_t l) in bitmap_to_string() argument
169 size_t i, j, k, need = bitmap_nbytes(b); in bitmap_to_string()
171 if (l < need || b->top >= b->len) in bitmap_to_string()
176 for (i = k = 0; i < b->top + 1; i++) { in bitmap_to_string()
180 s[need - 1 - k++] = (b->d[i] >> (j * 8)) & 0xff; in bitmap_to_string()
187 bitmap_from_string(struct bitmap *b, const void *p, size_t l) in bitmap_from_string() argument
195 if ((r = reserve(b, l * 8)) != 0) in bitmap_from_string()
197 bitmap_zero(b); in bitmap_from_string()
200 b->top = offset = ((l + (BITMAP_BYTES - 1)) / BITMAP_BYTES) - 1; in bitmap_from_string()
203 b->d[offset] |= (BITMAP_WTYPE)s[i] << shift; in bitmap_from_string()
210 retop(b); in bitmap_from_string()