idr_alloc — allocate an id


int idr_alloc (struct idr * idr,
 void * ptr,
 int start,
 int end,
 gfp_t gfp);


struct idr * idr

idr handle

void * ptr

pointer to be associated with the new id

int start

the minimum id (inclusive)

int end

the maximum id (exclusive)

gfp_t gfp

memory allocation flags


Allocates an unused ID in the range [start, end). Returns -ENOSPC if there are no unused IDs in that range.

Note that end is treated as max when <= 0. This is to always allow using start + N as end as long as N is inside integer range.

Simultaneous modifications to the idr are not allowed and should be prevented by the user, usually with a lock. idr_alloc may be called concurrently with read-only accesses to the idr, such as idr_find and idr_for_each_entry.