Lines Matching refs:id

40 	unsigned int id = *nextid;  in idr_alloc_u32()  local
47 id = (id < base) ? 0 : id - base; in idr_alloc_u32()
48 radix_tree_iter_init(&iter, id); in idr_alloc_u32()
84 u32 id = start; in idr_alloc() local
90 ret = idr_alloc_u32(idr, ptr, &id, end > 0 ? end - 1 : INT_MAX, gfp); in idr_alloc()
94 return id; in idr_alloc()
122 u32 id = idr->idr_next; in idr_alloc_cyclic() local
125 if ((int)id < start) in idr_alloc_cyclic()
126 id = start; in idr_alloc_cyclic()
128 err = idr_alloc_u32(idr, ptr, &id, max, gfp); in idr_alloc_cyclic()
129 if ((err == -ENOSPC) && (id > start)) { in idr_alloc_cyclic()
130 id = start; in idr_alloc_cyclic()
131 err = idr_alloc_u32(idr, ptr, &id, max, gfp); in idr_alloc_cyclic()
136 idr->idr_next = id + 1; in idr_alloc_cyclic()
137 return id; in idr_alloc_cyclic()
155 void *idr_remove(struct idr *idr, unsigned long id) in idr_remove() argument
157 return radix_tree_delete_item(&idr->idr_rt, id - idr->idr_base, NULL); in idr_remove()
175 void *idr_find(const struct idr *idr, unsigned long id) in idr_find() argument
177 return radix_tree_lookup(&idr->idr_rt, id - idr->idr_base); in idr_find()
199 int (*fn)(int id, void *p, void *data), void *data) in idr_for_each() argument
207 unsigned long id = iter.index + base; in idr_for_each() local
209 if (WARN_ON_ONCE(id > INT_MAX)) in idr_for_each()
211 ret = fn(id, rcu_dereference_raw(*slot), data); in idr_for_each()
235 unsigned long id = *nextid; in idr_get_next() local
237 id = (id < base) ? 0 : id - base; in idr_get_next()
238 slot = radix_tree_iter_find(&idr->idr_rt, &iter, id); in idr_get_next()
241 id = iter.index + base; in idr_get_next()
243 if (WARN_ON_ONCE(id > INT_MAX)) in idr_get_next()
246 *nextid = id; in idr_get_next()
266 unsigned long id = *nextid; in idr_get_next_ul() local
268 id = (id < base) ? 0 : id - base; in idr_get_next_ul()
269 slot = radix_tree_iter_find(&idr->idr_rt, &iter, id); in idr_get_next_ul()
292 void *idr_replace(struct idr *idr, void *ptr, unsigned long id) in idr_replace() argument
300 id -= idr->idr_base; in idr_replace()
302 entry = __radix_tree_lookup(&idr->idr_rt, id, &node, &slot); in idr_replace()
303 if (!slot || radix_tree_tag_get(&idr->idr_rt, id, IDR_FREE)) in idr_replace()
450 static void ida_remove(struct ida *ida, int id) in ida_remove() argument
452 unsigned long index = id / IDA_BITMAP_BITS; in ida_remove()
453 unsigned offset = id % IDA_BITMAP_BITS; in ida_remove()
487 WARN(1, "ida_free called for id=%d which is not allocated.\n", id); in ida_remove()
535 int id = 0; in ida_alloc_range() local
546 id = ida_get_new_above(ida, min); in ida_alloc_range()
547 if (id > (int)max) { in ida_alloc_range()
548 ida_remove(ida, id); in ida_alloc_range()
549 id = -ENOSPC; in ida_alloc_range()
553 if (unlikely(id == -EAGAIN)) { in ida_alloc_range()
559 return id; in ida_alloc_range()
570 void ida_free(struct ida *ida, unsigned int id) in ida_free() argument
574 BUG_ON((int)id < 0); in ida_free()
576 ida_remove(ida, id); in ida_free()