idr_preload
Prev | idr/ida Functions | Next

## Name

idr_preload — preload for `idr_alloc`

## Synopsis

`void idr_preload (` | gfp_t gfp_mask`)`;

## Arguments

`gfp_mask`

  allocation mask to use for preloading

## Description

Preload per-cpu layer buffer for `idr_alloc`. Can only be used from process context and each `idr_preload` invocation should be matched with `idr_preload_end`. Note that preemption is disabled while preloaded.

The first `idr_alloc` in the preloaded section can be treated as if it were invoked with `gfp_mask` used for preloading. This allows using more permissive allocation masks for idrs protected by spinlocks.

For example, if `idr_alloc` below fails, the failure can be treated as if `idr_alloc` were called with GFP_KERNEL rather than GFP_NOWAIT.

idr_preload(GFP_KERNEL); spin_lock(lock);

id = idr_alloc(idr, ptr, start, end, GFP_NOWAIT);

spin_unlock(lock); `idr_preload_end`; if (id < 0) error;

Prev | Up | Next
idr/ida Functions | Home | idr_alloc