Lines Matching refs:bit
129 int bit; in find_first_bit() local
131 for (bit = 0; size >= BITS_PER_LONG; in find_first_bit()
132 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_first_bit()
135 return (bit + __ffsl(*addr)); in find_first_bit()
140 bit += __ffsl(mask); in find_first_bit()
142 bit += size; in find_first_bit()
144 return (bit); in find_first_bit()
151 int bit; in find_first_zero_bit() local
153 for (bit = 0; size >= BITS_PER_LONG; in find_first_zero_bit()
154 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_first_zero_bit()
157 return (bit + __ffsl(~(*addr))); in find_first_zero_bit()
162 bit += __ffsl(mask); in find_first_zero_bit()
164 bit += size; in find_first_zero_bit()
166 return (bit); in find_first_zero_bit()
174 int bit; in find_last_bit() local
179 bit = BITS_PER_LONG * pos; in find_last_bit()
184 return (bit + __flsl(mask)); in find_last_bit()
188 bit -= BITS_PER_LONG; in find_last_bit()
190 return (bit + __flsl(*addr)); in find_last_bit()
200 int bit; in find_next_bit() local
207 bit = BITS_PER_LONG * pos; in find_next_bit()
212 return (bit + __ffsl(mask)); in find_next_bit()
213 if (size - bit <= BITS_PER_LONG) in find_next_bit()
215 bit += BITS_PER_LONG; in find_next_bit()
218 for (size -= bit; size >= BITS_PER_LONG; in find_next_bit()
219 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_next_bit()
222 return (bit + __ffsl(*addr)); in find_next_bit()
227 bit += __ffsl(mask); in find_next_bit()
229 bit += size; in find_next_bit()
231 return (bit); in find_next_bit()
240 int bit; in find_next_zero_bit() local
247 bit = BITS_PER_LONG * pos; in find_next_zero_bit()
252 return (bit + __ffsl(mask)); in find_next_zero_bit()
253 if (size - bit <= BITS_PER_LONG) in find_next_zero_bit()
255 bit += BITS_PER_LONG; in find_next_zero_bit()
258 for (size -= bit; size >= BITS_PER_LONG; in find_next_zero_bit()
259 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_next_zero_bit()
262 return (bit + __ffsl(~(*addr))); in find_next_zero_bit()
267 bit += __ffsl(mask); in find_next_zero_bit()
269 bit += size; in find_next_zero_bit()
271 return (bit); in find_next_zero_bit()
293 test_and_clear_bit(long bit, volatile unsigned long *var) in test_and_clear_bit() argument
297 var += BIT_WORD(bit); in test_and_clear_bit()
298 bit %= BITS_PER_LONG; in test_and_clear_bit()
299 bit = (1UL << bit); in test_and_clear_bit()
302 while (!atomic_fcmpset_long(var, &val, val & ~bit)) in test_and_clear_bit()
304 return !!(val & bit); in test_and_clear_bit()
308 __test_and_clear_bit(long bit, volatile unsigned long *var) in __test_and_clear_bit() argument
312 var += BIT_WORD(bit); in __test_and_clear_bit()
313 bit %= BITS_PER_LONG; in __test_and_clear_bit()
314 bit = (1UL << bit); in __test_and_clear_bit()
317 *var &= ~bit; in __test_and_clear_bit()
319 return !!(val & bit); in __test_and_clear_bit()
323 test_and_set_bit(long bit, volatile unsigned long *var) in test_and_set_bit() argument
327 var += BIT_WORD(bit); in test_and_set_bit()
328 bit %= BITS_PER_LONG; in test_and_set_bit()
329 bit = (1UL << bit); in test_and_set_bit()
332 while (!atomic_fcmpset_long(var, &val, val | bit)) in test_and_set_bit()
334 return !!(val & bit); in test_and_set_bit()
338 __test_and_set_bit(long bit, volatile unsigned long *var) in __test_and_set_bit() argument
342 var += BIT_WORD(bit); in __test_and_set_bit()
343 bit %= BITS_PER_LONG; in __test_and_set_bit()
344 bit = (1UL << bit); in __test_and_set_bit()
347 *var |= bit; in __test_and_set_bit()
349 return !!(val & bit); in __test_and_set_bit()
403 #define for_each_set_bit(bit, addr, size) \ argument
404 for ((bit) = find_first_bit((addr), (size)); \
405 (bit) < (size); \
406 (bit) = find_next_bit((addr), (size), (bit) + 1))
408 #define for_each_clear_bit(bit, addr, size) \ argument
409 for ((bit) = find_first_zero_bit((addr), (size)); \
410 (bit) < (size); \
411 (bit) = find_next_zero_bit((addr), (size), (bit) + 1))