Lines Matching refs:il

179 	struct idr_layer *il, *iln;  in idr_destroy()  local
191 for (il = idr->free; il != NULL; il = iln) { in idr_destroy()
192 iln = il->ary[0]; in idr_destroy()
193 free(il, M_IDR); in idr_destroy()
200 idr_remove_layer(struct idr_layer *il, int layer) in idr_remove_layer() argument
204 if (il == NULL) in idr_remove_layer()
207 free(il, M_IDR); in idr_remove_layer()
211 if (il->ary[i]) in idr_remove_layer()
212 idr_remove_layer(il->ary[i], layer - 1); in idr_remove_layer()
229 struct idr_layer *il; in idr_remove_locked() local
235 il = idr->top; in idr_remove_locked()
237 if (il == NULL || id > idr_max(idr)) in idr_remove_locked()
243 while (layer && il) { in idr_remove_locked()
245 il->bitmap |= 1 << idx; in idr_remove_locked()
246 il = il->ary[idx]; in idr_remove_locked()
255 if (il == NULL || (il->bitmap & (1 << idx)) != 0) in idr_remove_locked()
257 id, idr, il); in idr_remove_locked()
258 res = il->ary[idx]; in idr_remove_locked()
259 il->ary[idx] = NULL; in idr_remove_locked()
260 il->bitmap |= 1 << idx; in idr_remove_locked()
280 struct idr_layer *il; in idr_find_layer_locked() local
284 il = idr->top; in idr_find_layer_locked()
286 if (il == NULL || id > idr_max(idr)) in idr_find_layer_locked()
288 while (layer && il) { in idr_find_layer_locked()
289 il = il->ary[idr_pos(id, layer)]; in idr_find_layer_locked()
292 return (il); in idr_find_layer_locked()
298 struct idr_layer *il; in idr_replace() local
303 il = idr_find_layer_locked(idr, id); in idr_replace()
307 if (il == NULL || (il->bitmap & (1 << idx))) { in idr_replace()
310 res = il->ary[idx]; in idr_replace()
311 il->ary[idx] = ptr; in idr_replace()
320 struct idr_layer *il; in idr_find_locked() local
324 il = idr_find_layer_locked(idr, id); in idr_find_locked()
325 if (il != NULL) in idr_find_locked()
326 res = il->ary[id & IDR_MASK]; in idr_find_locked()
364 struct idr_layer *il, *iln; in idr_pre_get() local
371 for (il = idr->free; il != NULL; il = il->ary[0]) in idr_pre_get()
377 iln = malloc(sizeof(*il), M_IDR, M_ZERO | gfp_mask); in idr_pre_get()
382 il->ary[0] = iln; in idr_pre_get()
383 il = iln; in idr_pre_get()
385 head = il = iln; in idr_pre_get()
390 il->ary[0] = idr->free; in idr_pre_get()
399 struct idr_layer *il; in idr_free_list_get() local
401 if ((il = idp->free) != NULL) { in idr_free_list_get()
402 idp->free = il->ary[0]; in idr_free_list_get()
403 il->ary[0] = NULL; in idr_free_list_get()
405 return (il); in idr_free_list_get()
411 struct idr_layer *il; in idr_get() local
413 if ((il = idr_free_list_get(idp)) != NULL) { in idr_get()
414 MPASS(il->bitmap != 0); in idr_get()
415 } else if ((il = malloc(sizeof(*il), M_IDR, M_ZERO | M_NOWAIT)) != NULL) { in idr_get()
416 bitmap_fill(&il->bitmap, IDR_SIZE); in idr_get()
417 } else if ((il = idr_preload_dequeue_locked(&DPCPU_GET(linux_idr_cache))) != NULL) { in idr_get()
418 bitmap_fill(&il->bitmap, IDR_SIZE); in idr_get()
422 return (il); in idr_get()
433 struct idr_layer *il; in idr_get_new_locked() local
450 il = idr_get(idr); in idr_get_new_locked()
451 if (il == NULL) in idr_get_new_locked()
453 il->ary[0] = idr->top; in idr_get_new_locked()
455 il->bitmap &= ~1; in idr_get_new_locked()
456 idr->top = il; in idr_get_new_locked()
459 il = idr->top; in idr_get_new_locked()
465 stack[layer] = il; in idr_get_new_locked()
466 idx = ffsl(il->bitmap); in idr_get_new_locked()
469 idr, il); in idr_get_new_locked()
474 if (il->ary[idx] == NULL) { in idr_get_new_locked()
475 il->ary[idx] = idr_get(idr); in idr_get_new_locked()
476 if (il->ary[idx] == NULL) in idr_get_new_locked()
479 il = il->ary[idx]; in idr_get_new_locked()
484 il->bitmap &= ~(1 << idx); in idr_get_new_locked()
485 il->ary[idx] = ptr; in idr_get_new_locked()
490 while (il->bitmap == 0 && ++layer < idr->layers) { in idr_get_new_locked()
491 il = stack[layer]; in idr_get_new_locked()
492 il->bitmap &= ~(1 << idr_pos(id, layer)); in idr_get_new_locked()
520 struct idr_layer *il; in idr_get_new_above_locked() local
553 il = idr_get(idr); in idr_get_new_above_locked()
554 if (il == NULL) in idr_get_new_above_locked()
556 il->ary[0] = idr->top; in idr_get_new_above_locked()
558 il->bitmap &= ~1; in idr_get_new_above_locked()
559 idr->top = il; in idr_get_new_above_locked()
562 il = idr->top; in idr_get_new_above_locked()
568 stack[layer] = il; in idr_get_new_above_locked()
571 idx = find_next_bit(&il->bitmap, IDR_SIZE, sidx); in idr_get_new_above_locked()
574 idr, il); in idr_get_new_above_locked()
592 if (il->ary[idx] == NULL) { in idr_get_new_above_locked()
593 il->ary[idx] = idr_get(idr); in idr_get_new_above_locked()
594 if (il->ary[idx] == NULL) in idr_get_new_above_locked()
597 il = il->ary[idx]; in idr_get_new_above_locked()
602 il->bitmap &= ~(1 << idx); in idr_get_new_above_locked()
603 il->ary[idx] = ptr; in idr_get_new_above_locked()
608 while (il->bitmap == 0 && ++layer < idr->layers) { in idr_get_new_above_locked()
609 il = stack[layer]; in idr_get_new_above_locked()
610 il->bitmap &= ~(1 << idr_pos(id, layer)); in idr_get_new_above_locked()
695 idr_for_each_layer(struct idr_layer *il, int offset, int layer, in idr_for_each_layer() argument
700 if (il == NULL) in idr_for_each_layer()
704 if (il->ary[i] == NULL) in idr_for_each_layer()
706 err = f(i + offset, il->ary[i], data); in idr_for_each_layer()
713 if (il->ary[i] == NULL) in idr_for_each_layer()
715 err = idr_for_each_layer(il->ary[i], in idr_for_each_layer()