Lines Matching refs:ida

868 static void free_bitmap(struct ida *ida, struct ida_bitmap *bitmap)  in free_bitmap()  argument
872 if (!ida->free_bitmap) { in free_bitmap()
873 spin_lock_irqsave(&ida->idr.lock, flags); in free_bitmap()
874 if (!ida->free_bitmap) { in free_bitmap()
875 ida->free_bitmap = bitmap; in free_bitmap()
878 spin_unlock_irqrestore(&ida->idr.lock, flags); in free_bitmap()
896 int ida_pre_get(struct ida *ida, gfp_t gfp_mask) in ida_pre_get() argument
899 if (!__idr_pre_get(&ida->idr, gfp_mask)) in ida_pre_get()
903 if (!ida->free_bitmap) { in ida_pre_get()
910 free_bitmap(ida, bitmap); in ida_pre_get()
932 int ida_get_new_above(struct ida *ida, int starting_id, int *p_id) in ida_get_new_above() argument
943 t = idr_get_empty_slot(&ida->idr, idr_id, pa, 0, &ida->idr); in ida_get_new_above()
957 spin_lock_irqsave(&ida->idr.lock, flags); in ida_get_new_above()
958 bitmap = ida->free_bitmap; in ida_get_new_above()
959 ida->free_bitmap = NULL; in ida_get_new_above()
960 spin_unlock_irqrestore(&ida->idr.lock, flags); in ida_get_new_above()
995 if (ida->idr.id_free_cnt || ida->free_bitmap) { in ida_get_new_above()
996 struct idr_layer *p = get_from_free_list(&ida->idr); in ida_get_new_above()
1010 void ida_remove(struct ida *ida, int id) in ida_remove() argument
1012 struct idr_layer *p = ida->idr.top; in ida_remove()
1013 int shift = (ida->idr.layers - 1) * IDR_BITS; in ida_remove()
1019 if (idr_id > idr_max(ida->idr.layers)) in ida_remove()
1044 idr_remove(&ida->idr, idr_id); in ida_remove()
1045 free_bitmap(ida, bitmap); in ida_remove()
1059 void ida_destroy(struct ida *ida) in ida_destroy() argument
1061 idr_destroy(&ida->idr); in ida_destroy()
1062 kfree(ida->free_bitmap); in ida_destroy()
1078 int ida_simple_get(struct ida *ida, unsigned int start, unsigned int end, in ida_simple_get() argument
1096 if (!ida_pre_get(ida, gfp_mask)) in ida_simple_get()
1100 ret = ida_get_new_above(ida, start, &id); in ida_simple_get()
1103 ida_remove(ida, id); in ida_simple_get()
1123 void ida_simple_remove(struct ida *ida, unsigned int id) in ida_simple_remove() argument
1129 ida_remove(ida, id); in ida_simple_remove()
1141 void ida_init(struct ida *ida) in ida_init() argument
1143 memset(ida, 0, sizeof(struct ida)); in ida_init()
1144 idr_init(&ida->idr); in ida_init()