| idr_preload(9) - phpMan
IDR_PRELOAD(9) Basic Kernel Library Functions IDR_PRELOAD(9)
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;
COPYRIGHT
Kernel Hackers Manual 4.8. January 2017 IDR_PRELOAD(9)
|