Lines Matching refs:bit
128 int bit; in find_first_bit() local
130 for (bit = 0; size >= BITS_PER_LONG; in find_first_bit()
131 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_first_bit()
134 return (bit + __ffsl(*addr)); in find_first_bit()
139 bit += __ffsl(mask); in find_first_bit()
141 bit += size; in find_first_bit()
143 return (bit); in find_first_bit()
150 int bit; in find_first_zero_bit() local
152 for (bit = 0; size >= BITS_PER_LONG; in find_first_zero_bit()
153 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_first_zero_bit()
156 return (bit + __ffsl(~(*addr))); in find_first_zero_bit()
161 bit += __ffsl(mask); in find_first_zero_bit()
163 bit += size; in find_first_zero_bit()
165 return (bit); in find_first_zero_bit()
173 int bit; in find_last_bit() local
178 bit = BITS_PER_LONG * pos; in find_last_bit()
183 return (bit + __flsl(mask)); in find_last_bit()
187 bit -= BITS_PER_LONG; in find_last_bit()
189 return (bit + __flsl(*addr)); in find_last_bit()
199 int bit; in find_next_bit() local
206 bit = BITS_PER_LONG * pos; in find_next_bit()
211 return (bit + __ffsl(mask)); in find_next_bit()
212 if (size - bit <= BITS_PER_LONG) in find_next_bit()
214 bit += BITS_PER_LONG; in find_next_bit()
217 for (size -= bit; size >= BITS_PER_LONG; in find_next_bit()
218 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_next_bit()
221 return (bit + __ffsl(*addr)); in find_next_bit()
226 bit += __ffsl(mask); in find_next_bit()
228 bit += size; in find_next_bit()
230 return (bit); in find_next_bit()
239 int bit; in find_next_zero_bit() local
246 bit = BITS_PER_LONG * pos; in find_next_zero_bit()
251 return (bit + __ffsl(mask)); in find_next_zero_bit()
252 if (size - bit <= BITS_PER_LONG) in find_next_zero_bit()
254 bit += BITS_PER_LONG; in find_next_zero_bit()
257 for (size -= bit; size >= BITS_PER_LONG; in find_next_zero_bit()
258 size -= BITS_PER_LONG, bit += BITS_PER_LONG, addr++) { in find_next_zero_bit()
261 return (bit + __ffsl(~(*addr))); in find_next_zero_bit()
266 bit += __ffsl(mask); in find_next_zero_bit()
268 bit += size; in find_next_zero_bit()
270 return (bit); in find_next_zero_bit()
292 test_and_clear_bit(long bit, volatile unsigned long *var) in test_and_clear_bit() argument
296 var += BIT_WORD(bit); in test_and_clear_bit()
297 bit %= BITS_PER_LONG; in test_and_clear_bit()
298 bit = (1UL << bit); in test_and_clear_bit()
301 while (!atomic_fcmpset_long(var, &val, val & ~bit)) in test_and_clear_bit()
303 return !!(val & bit); in test_and_clear_bit()
307 __test_and_clear_bit(long bit, volatile unsigned long *var) in __test_and_clear_bit() argument
311 var += BIT_WORD(bit); in __test_and_clear_bit()
312 bit %= BITS_PER_LONG; in __test_and_clear_bit()
313 bit = (1UL << bit); in __test_and_clear_bit()
316 *var &= ~bit; in __test_and_clear_bit()
318 return !!(val & bit); in __test_and_clear_bit()
322 test_and_set_bit(long bit, volatile unsigned long *var) in test_and_set_bit() argument
326 var += BIT_WORD(bit); in test_and_set_bit()
327 bit %= BITS_PER_LONG; in test_and_set_bit()
328 bit = (1UL << bit); in test_and_set_bit()
331 while (!atomic_fcmpset_long(var, &val, val | bit)) in test_and_set_bit()
333 return !!(val & bit); in test_and_set_bit()
337 __test_and_set_bit(long bit, volatile unsigned long *var) in __test_and_set_bit() argument
341 var += BIT_WORD(bit); in __test_and_set_bit()
342 bit %= BITS_PER_LONG; in __test_and_set_bit()
343 bit = (1UL << bit); in __test_and_set_bit()
346 *var |= bit; in __test_and_set_bit()
348 return !!(val & bit); in __test_and_set_bit()
402 #define for_each_set_bit(bit, addr, size) \ argument
403 for ((bit) = find_first_bit((addr), (size)); \
404 (bit) < (size); \
405 (bit) = find_next_bit((addr), (size), (bit) + 1))
407 #define for_each_clear_bit(bit, addr, size) \ argument
408 for ((bit) = find_first_zero_bit((addr), (size)); \
409 (bit) < (size); \
410 (bit) = find_next_zero_bit((addr), (size), (bit) + 1))