Lines Matching defs:bit
221 * Returns the bit number of the first irq in the allocated block of irqs,
222 * or -1UL if no bit is available or the AIRQ_IV_ALLOC flag has not been
227 unsigned long bit, i, flags;
232 bit = find_first_bit_inv(iv->avail, iv->bits);
233 while (bit + num <= iv->bits) {
235 if (!test_bit_inv(bit + i, iv->avail))
240 clear_bit_inv(bit + i, iv->avail);
241 if (bit + num >= iv->end)
242 iv->end = bit + num + 1;
245 bit = find_next_bit_inv(iv->avail, iv->bits, bit + i + 1);
247 if (bit + num > iv->bits)
248 bit = -1UL;
250 return bit;
257 * @bit: number of the first irq bit to free
260 void airq_iv_free(struct airq_iv *iv, unsigned long bit, unsigned long num)
268 /* Clear (possibly left over) interrupt bit */
269 clear_bit_inv(bit + i, iv->vector);
270 /* Make the bit positions available again */
271 set_bit_inv(bit + i, iv->avail);
273 if (bit + num >= iv->end) {
274 /* Find new end of bit-field */
285 * @start: bit number to start the search
286 * @end: bit number to end the search
288 * Returns the bit number of the next non-zero interrupt bit, or
294 unsigned long bit;
296 /* Find non-zero bit starting from 'ivs->next'. */
297 bit = find_next_bit_inv(iv->vector, end, start);
298 if (bit >= end)
300 clear_bit_inv(bit, iv->vector);
301 return bit;