Lines Matching refs:b

54 bitmap_free(struct bitmap *b)  in bitmap_free()  argument
56 if (b != NULL && b->d != NULL) { in bitmap_free()
57 bitmap_zero(b); in bitmap_free()
58 free(b->d); in bitmap_free()
59 b->d = NULL; in bitmap_free()
61 free(b); in bitmap_free()
65 bitmap_zero(struct bitmap *b) in bitmap_zero() argument
67 memset(b->d, 0, b->len * BITMAP_BYTES); in bitmap_zero()
68 b->top = 0; in bitmap_zero()
72 bitmap_test_bit(struct bitmap *b, u_int n) in bitmap_test_bit() argument
74 if (b->top >= b->len) in bitmap_test_bit()
76 if (b->len == 0 || (n / BITMAP_BITS) > b->top) in bitmap_test_bit()
78 return (b->d[n / BITMAP_BITS] >> (n & BITMAP_WMASK)) & 1; in bitmap_test_bit()
82 reserve(struct bitmap *b, u_int n) in reserve() argument
87 if (b->top >= b->len || n > BITMAP_MAX) in reserve()
90 if (b->len < nlen) { in reserve()
91 if ((tmp = recallocarray(b->d, b->len, in reserve()
94 b->d = tmp; in reserve()
95 b->len = nlen; in reserve()
101 bitmap_set_bit(struct bitmap *b, u_int n) in bitmap_set_bit() argument
106 if ((r = reserve(b, n)) != 0) in bitmap_set_bit()
109 if (offset > b->top) in bitmap_set_bit()
110 b->top = offset; in bitmap_set_bit()
111 b->d[offset] |= (BITMAP_WTYPE)1 << (n & BITMAP_WMASK); in bitmap_set_bit()
117 retop(struct bitmap *b) in retop() argument
119 if (b->top >= b->len) in retop()
121 while (b->top > 0 && b->d[b->top] == 0) in retop()
122 b->top--; in retop()
126 bitmap_clear_bit(struct bitmap *b, u_int n) in bitmap_clear_bit() argument
130 if (b->top >= b->len || n > BITMAP_MAX) in bitmap_clear_bit()
133 if (offset > b->top) in bitmap_clear_bit()
135 b->d[offset] &= ~((BITMAP_WTYPE)1 << (n & BITMAP_WMASK)); in bitmap_clear_bit()
137 retop(b); in bitmap_clear_bit()
141 bitmap_nbits(struct bitmap *b) in bitmap_nbits() argument
146 retop(b); in bitmap_nbits()
147 if (b->top >= b->len) in bitmap_nbits()
149 if (b->len == 0 || (b->top == 0 && b->d[0] == 0)) in bitmap_nbits()
152 w = b->d[b->top]; in bitmap_nbits()
153 bits = (b->top + 1) * BITMAP_BITS; in bitmap_nbits()
162 bitmap_nbytes(struct bitmap *b) in bitmap_nbytes() argument
164 return (bitmap_nbits(b) + 7) / 8; in bitmap_nbytes()
168 bitmap_to_string(struct bitmap *b, void *p, size_t l) in bitmap_to_string() argument
171 size_t i, j, k, need = bitmap_nbytes(b); in bitmap_to_string()
173 if (l < need || b->top >= b->len) in bitmap_to_string()
178 for (i = k = 0; i < b->top + 1; i++) { in bitmap_to_string()
182 s[need - 1 - k++] = (b->d[i] >> (j * 8)) & 0xff; in bitmap_to_string()
189 bitmap_from_string(struct bitmap *b, const void *p, size_t l) in bitmap_from_string() argument
197 if ((r = reserve(b, l * 8)) != 0) in bitmap_from_string()
199 bitmap_zero(b); in bitmap_from_string()
202 b->top = offset = ((l + (BITMAP_BYTES - 1)) / BITMAP_BYTES) - 1; in bitmap_from_string()
205 b->d[offset] |= (BITMAP_WTYPE)s[i] << shift; in bitmap_from_string()
212 retop(b); in bitmap_from_string()