1. NAME

idr_alloc - allocate new idr entry

2. SYNOPSIS

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

3. ARGUMENTS

idr
    the (initialized) idr

ptr
    pointer to be associated with the new id

start
    the minimum id (inclusive)

end
    the maximum id (exclusive, <= 0 for max)

gfp_mask
    memory allocation flags

4. DESCRIPTION

Allocate an id in [start, end) and associate it with ptr. If no ID is available in the specified range, returns -ENOSPC. On memory allocation failure, returns -ENOMEM.

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.

The user is responsible for exclusively synchronizing all operations which may modify idr. However, read-only accesses such as idr_find or iteration can be performed under RCU read lock provided the user destroys ptr in RCU-safe way after removal from idr.

5. COPYRIGHT