Lines Matching refs:size

12  * size and improve performance, 2015.
27 * @size: The bitmap size in bits
29 #define FIND_FIRST_BIT(FETCH, MUNGE, size) \
31 unsigned long idx, val, sz = (size); \
48 * @size: The bitmap size in bits
51 #define FIND_NEXT_BIT(FETCH, MUNGE, size, start) \
53 unsigned long mask, idx, tmp, sz = (size), __start = (start); \
72 #define FIND_NTH_BIT(FETCH, size, num) \
74 unsigned long sz = (size), nr = (num), idx, w, tmp; \
100 unsigned long _find_first_bit(const unsigned long *addr, unsigned long size)
102 return FIND_FIRST_BIT(addr[idx], /* nop */, size);
113 unsigned long size)
115 return FIND_FIRST_BIT(addr1[idx] & addr2[idx], /* nop */, size);
125 unsigned long size)
127 return FIND_FIRST_BIT(addr1[idx] & ~addr2[idx], /* nop */, size);
137 unsigned long size)
139 return FIND_FIRST_BIT(addr1[idx] & addr2[idx] & addr3[idx], /* nop */, size);
147 unsigned long _find_first_zero_bit(const unsigned long *addr, unsigned long size)
149 return FIND_FIRST_BIT(~addr[idx], /* nop */, size);
162 unsigned long __find_nth_bit(const unsigned long *addr, unsigned long size, unsigned long n)
164 return FIND_NTH_BIT(addr[idx], size, n);
169 unsigned long size, unsigned long n)
171 return FIND_NTH_BIT(addr1[idx] & addr2[idx], size, n);
176 unsigned long size, unsigned long n)
178 return FIND_NTH_BIT(addr1[idx] & ~addr2[idx], size, n);
185 unsigned long size, unsigned long n)
187 return FIND_NTH_BIT(addr1[idx] & addr2[idx] & ~addr3[idx], size, n);
228 unsigned long _find_last_bit(const unsigned long *addr, unsigned long size)
230 if (size) {
231 unsigned long val = BITMAP_LAST_WORD_MASK(size);
232 unsigned long idx = (size-1) / BITS_PER_LONG;
242 return size;
248 unsigned long size, unsigned long offset)
250 offset = find_next_bit(addr, size, offset);
251 if (offset == size)
252 return size;
267 unsigned long _find_first_zero_bit_le(const unsigned long *addr, unsigned long size)
269 return FIND_FIRST_BIT(~addr[idx], swab, size);
277 unsigned long size, unsigned long offset)
279 return FIND_NEXT_BIT(~addr[idx], swab, size, offset);
286 unsigned long size, unsigned long offset)
288 return FIND_NEXT_BIT(addr[idx], swab, size, offset);
299 * @size: The bitmap size in bits
301 * Returns: a position of a random set bit; >= @size otherwise
303 unsigned long find_random_bit(const unsigned long *addr, unsigned long size)
305 int w = bitmap_weight(addr, size);
309 return size;
312 return find_first_bit(addr, size);
314 return find_nth_bit(addr, size, get_random_u32_below(w));