Lines Matching refs:bd

30 			      struct bundle_data *bd,  in setup_bundle_data()  argument
33 bd->sidx = offset / bundle_bitness(bitarray); in setup_bundle_data()
34 bd->soff = offset % bundle_bitness(bitarray); in setup_bundle_data()
36 bd->eidx = (offset + num_bits - 1) / bundle_bitness(bitarray); in setup_bundle_data()
37 bd->eoff = (offset + num_bits - 1) % bundle_bitness(bitarray); in setup_bundle_data()
39 bd->smask = ~(BIT(bd->soff) - 1); in setup_bundle_data()
40 bd->emask = (BIT(bd->eoff) - 1) | BIT(bd->eoff); in setup_bundle_data()
42 if (bd->sidx == bd->eidx) { in setup_bundle_data()
44 bd->smask &= bd->emask; in setup_bundle_data()
67 struct bundle_data *bd, in match_region() argument
76 setup_bundle_data(bitarray, bd, offset, num_bits); in match_region()
78 if (bd->sidx == bd->eidx) { in match_region()
79 bundle = bitarray->bundles[bd->sidx]; in match_region()
84 if ((bundle & bd->smask) != bd->smask) { in match_region()
86 mismatch_bundle = ~bundle & bd->smask; in match_region()
87 mismatch_bundle_idx = bd->sidx; in match_region()
98 bundle = bitarray->bundles[bd->sidx]; in match_region()
103 if ((bundle & bd->smask) != bd->smask) { in match_region()
105 mismatch_bundle = ~bundle & bd->smask; in match_region()
106 mismatch_bundle_idx = bd->sidx; in match_region()
111 bundle = bitarray->bundles[bd->eidx]; in match_region()
116 if ((bundle & bd->emask) != bd->emask) { in match_region()
118 mismatch_bundle = ~bundle & bd->emask; in match_region()
119 mismatch_bundle_idx = bd->eidx; in match_region()
124 for (idx = bd->sidx + 1; idx < bd->eidx; idx++) { in match_region()
174 struct bundle_data *bd) in set_region() argument
179 if (bd == NULL) { in set_region()
180 bd = &bdata; in set_region()
181 setup_bundle_data(bitarray, bd, offset, num_bits); in set_region()
184 if (bd->sidx == bd->eidx) { in set_region()
187 bitarray->bundles[bd->sidx] |= bd->smask; in set_region()
189 bitarray->bundles[bd->sidx] &= ~bd->smask; in set_region()
198 bitarray->bundles[bd->sidx] |= bd->smask; in set_region()
199 bitarray->bundles[bd->eidx] |= bd->emask; in set_region()
200 for (idx = bd->sidx + 1; idx < bd->eidx; idx++) { in set_region()
204 bitarray->bundles[bd->sidx] &= ~bd->smask; in set_region()
205 bitarray->bundles[bd->eidx] &= ~bd->emask; in set_region()
206 for (idx = bd->sidx + 1; idx < bd->eidx; idx++) { in set_region()
218 struct bundle_data bd; in sys_bitarray_popcount_region() local
236 setup_bundle_data(bitarray, &bd, offset, num_bits); in sys_bitarray_popcount_region()
238 if (bd.sidx == bd.eidx) { in sys_bitarray_popcount_region()
240 *count = POPCOUNT(bitarray->bundles[bd.sidx] & bd.smask); in sys_bitarray_popcount_region()
248 *count += POPCOUNT(bitarray->bundles[bd.sidx] & bd.smask); in sys_bitarray_popcount_region()
249 *count += POPCOUNT(bitarray->bundles[bd.eidx] & bd.emask); in sys_bitarray_popcount_region()
250 for (idx = bd.sidx + 1; idx < bd.eidx; idx++) { in sys_bitarray_popcount_region()
267 struct bundle_data bd; in sys_bitarray_xor() local
288 setup_bundle_data(other, &bd, offset, num_bits); in sys_bitarray_xor()
290 if (bd.sidx == bd.eidx) { in sys_bitarray_xor()
292 dst->bundles[bd.sidx] = in sys_bitarray_xor()
293 ((other->bundles[bd.sidx] ^ dst->bundles[bd.sidx]) & bd.smask) | in sys_bitarray_xor()
294 (dst->bundles[bd.sidx] & ~bd.smask); in sys_bitarray_xor()
301 dst->bundles[bd.sidx] = in sys_bitarray_xor()
302 ((other->bundles[bd.sidx] ^ dst->bundles[bd.sidx]) & bd.smask) | in sys_bitarray_xor()
303 (dst->bundles[bd.sidx] & ~bd.smask); in sys_bitarray_xor()
304 dst->bundles[bd.eidx] = in sys_bitarray_xor()
305 ((other->bundles[bd.eidx] ^ dst->bundles[bd.eidx]) & bd.emask) | in sys_bitarray_xor()
306 (dst->bundles[bd.eidx] & ~bd.emask); in sys_bitarray_xor()
307 for (idx = bd.sidx + 1; idx < bd.eidx; idx++) { in sys_bitarray_xor()
497 struct bundle_data bd; in sys_bitarray_alloc() local
544 &bd, &mismatch)) { in sys_bitarray_alloc()
545 set_region(bitarray, bit_idx, num_bits, true, &bd); in sys_bitarray_alloc()
569 struct bundle_data bd; in sys_bitarray_find_nth_set() local
584 setup_bundle_data(bitarray, &bd, offset, num_bits); in sys_bitarray_find_nth_set()
586 count = POPCOUNT(bitarray->bundles[bd.sidx] & bd.smask); in sys_bitarray_find_nth_set()
589 idx = bd.sidx; in sys_bitarray_find_nth_set()
590 mask = bd.smask; in sys_bitarray_find_nth_set()
594 if (bd.sidx != bd.eidx) { in sys_bitarray_find_nth_set()
600 for (idx = bd.sidx + 1; idx < bd.eidx; idx++) { in sys_bitarray_find_nth_set()
609 count = POPCOUNT(bitarray->bundles[bd.eidx] & bd.emask); in sys_bitarray_find_nth_set()
611 idx = bd.eidx; in sys_bitarray_find_nth_set()
612 mask = bd.emask; in sys_bitarray_find_nth_set()
644 struct bundle_data bd; in sys_bitarray_free() local
663 if (match_region(bitarray, offset, num_bits, true, &bd, NULL)) { in sys_bitarray_free()
664 set_region(bitarray, offset, num_bits, false, &bd); in sys_bitarray_free()
679 struct bundle_data bd; in is_region_set_clear() local
694 ret = match_region(bitarray, offset, num_bits, to_set, &bd, NULL); in is_region_set_clear()
744 struct bundle_data bd; in sys_bitarray_test_and_set_region() local
761 region_clear = match_region(bitarray, offset, num_bits, !to_set, &bd, NULL); in sys_bitarray_test_and_set_region()
763 set_region(bitarray, offset, num_bits, to_set, &bd); in sys_bitarray_test_and_set_region()