Lines Matching refs:il
180 struct idr_layer *il, *iln; in idr_destroy() local
192 for (il = idr->free; il != NULL; il = iln) { in idr_destroy()
193 iln = il->ary[0]; in idr_destroy()
194 free(il, M_IDR); in idr_destroy()
201 idr_remove_layer(struct idr_layer *il, int layer) in idr_remove_layer() argument
205 if (il == NULL) in idr_remove_layer()
208 free(il, M_IDR); in idr_remove_layer()
212 if (il->ary[i]) in idr_remove_layer()
213 idr_remove_layer(il->ary[i], layer - 1); in idr_remove_layer()
230 struct idr_layer *il; in idr_remove_locked() local
236 il = idr->top; in idr_remove_locked()
238 if (il == NULL || id > idr_max(idr)) in idr_remove_locked()
244 while (layer && il) { in idr_remove_locked()
246 il->bitmap |= 1 << idx; in idr_remove_locked()
247 il = il->ary[idx]; in idr_remove_locked()
256 if (il == NULL || (il->bitmap & (1 << idx)) != 0) in idr_remove_locked()
258 id, idr, il); in idr_remove_locked()
259 res = il->ary[idx]; in idr_remove_locked()
260 il->ary[idx] = NULL; in idr_remove_locked()
261 il->bitmap |= 1 << idx; in idr_remove_locked()
281 struct idr_layer *il; in idr_find_layer_locked() local
285 il = idr->top; in idr_find_layer_locked()
287 if (il == NULL || id > idr_max(idr)) in idr_find_layer_locked()
289 while (layer && il) { in idr_find_layer_locked()
290 il = il->ary[idr_pos(id, layer)]; in idr_find_layer_locked()
293 return (il); in idr_find_layer_locked()
299 struct idr_layer *il; in idr_replace() local
304 il = idr_find_layer_locked(idr, id); in idr_replace()
308 if (il == NULL || (il->bitmap & (1 << idx))) { in idr_replace()
311 res = il->ary[idx]; in idr_replace()
312 il->ary[idx] = ptr; in idr_replace()
321 struct idr_layer *il; in idr_find_locked() local
325 il = idr_find_layer_locked(idr, id); in idr_find_locked()
326 if (il != NULL) in idr_find_locked()
327 res = il->ary[id & IDR_MASK]; in idr_find_locked()
365 struct idr_layer *il, *iln; in idr_pre_get() local
372 for (il = idr->free; il != NULL; il = il->ary[0]) in idr_pre_get()
378 iln = malloc(sizeof(*il), M_IDR, M_ZERO | gfp_mask); in idr_pre_get()
383 il->ary[0] = iln; in idr_pre_get()
384 il = iln; in idr_pre_get()
386 head = il = iln; in idr_pre_get()
391 il->ary[0] = idr->free; in idr_pre_get()
400 struct idr_layer *il; in idr_free_list_get() local
402 if ((il = idp->free) != NULL) { in idr_free_list_get()
403 idp->free = il->ary[0]; in idr_free_list_get()
404 il->ary[0] = NULL; in idr_free_list_get()
406 return (il); in idr_free_list_get()
412 struct idr_layer *il; in idr_get() local
414 if ((il = idr_free_list_get(idp)) != NULL) { in idr_get()
415 MPASS(il->bitmap != 0); in idr_get()
416 } else if ((il = malloc(sizeof(*il), M_IDR, M_ZERO | M_NOWAIT)) != NULL) { in idr_get()
417 bitmap_fill(&il->bitmap, IDR_SIZE); in idr_get()
418 } else if ((il = idr_preload_dequeue_locked(&DPCPU_GET(linux_idr_cache))) != NULL) { in idr_get()
419 bitmap_fill(&il->bitmap, IDR_SIZE); in idr_get()
423 return (il); in idr_get()
434 struct idr_layer *il; in idr_get_new_locked() local
451 il = idr_get(idr); in idr_get_new_locked()
452 if (il == NULL) in idr_get_new_locked()
454 il->ary[0] = idr->top; in idr_get_new_locked()
456 il->bitmap &= ~1; in idr_get_new_locked()
457 idr->top = il; in idr_get_new_locked()
460 il = idr->top; in idr_get_new_locked()
466 stack[layer] = il; in idr_get_new_locked()
467 idx = ffsl(il->bitmap); in idr_get_new_locked()
470 idr, il); in idr_get_new_locked()
475 if (il->ary[idx] == NULL) { in idr_get_new_locked()
476 il->ary[idx] = idr_get(idr); in idr_get_new_locked()
477 if (il->ary[idx] == NULL) in idr_get_new_locked()
480 il = il->ary[idx]; in idr_get_new_locked()
485 il->bitmap &= ~(1 << idx); in idr_get_new_locked()
486 il->ary[idx] = ptr; in idr_get_new_locked()
491 while (il->bitmap == 0 && ++layer < idr->layers) { in idr_get_new_locked()
492 il = stack[layer]; in idr_get_new_locked()
493 il->bitmap &= ~(1 << idr_pos(id, layer)); in idr_get_new_locked()
521 struct idr_layer *il; in idr_get_new_above_locked() local
554 il = idr_get(idr); in idr_get_new_above_locked()
555 if (il == NULL) in idr_get_new_above_locked()
557 il->ary[0] = idr->top; in idr_get_new_above_locked()
559 il->bitmap &= ~1; in idr_get_new_above_locked()
560 idr->top = il; in idr_get_new_above_locked()
563 il = idr->top; in idr_get_new_above_locked()
569 stack[layer] = il; in idr_get_new_above_locked()
572 idx = find_next_bit(&il->bitmap, IDR_SIZE, sidx); in idr_get_new_above_locked()
575 idr, il); in idr_get_new_above_locked()
593 if (il->ary[idx] == NULL) { in idr_get_new_above_locked()
594 il->ary[idx] = idr_get(idr); in idr_get_new_above_locked()
595 if (il->ary[idx] == NULL) in idr_get_new_above_locked()
598 il = il->ary[idx]; in idr_get_new_above_locked()
603 il->bitmap &= ~(1 << idx); in idr_get_new_above_locked()
604 il->ary[idx] = ptr; in idr_get_new_above_locked()
609 while (il->bitmap == 0 && ++layer < idr->layers) { in idr_get_new_above_locked()
610 il = stack[layer]; in idr_get_new_above_locked()
611 il->bitmap &= ~(1 << idr_pos(id, layer)); in idr_get_new_above_locked()
696 idr_for_each_layer(struct idr_layer *il, int offset, int layer, in idr_for_each_layer() argument
701 if (il == NULL) in idr_for_each_layer()
705 if (il->ary[i] == NULL) in idr_for_each_layer()
707 err = f(i + offset, il->ary[i], data); in idr_for_each_layer()
714 if (il->ary[i] == NULL) in idr_for_each_layer()
716 err = idr_for_each_layer(il->ary[i], in idr_for_each_layer()