---
name: "alloc_unrl"
section: "9"
platform: "linux"
package: "freebsd-manpages"
version: "6.0-5"
release: "Debian 4.0 (Etch)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/alloc_unrl"
---

# alloc\_unrl(9)

kernel unit number allocator

## NAME

**new\_unrhdr**, **delete\_unrhdr**, **alloc\_unr**, **free\_unr** – kernel unit number allocator

## SYNOPSIS

**#include \<sys/systm.h\>**

*struct unrhdr \**\

**new\_unrhdr**(*int low*, *int high*, *struct mtx \*mutex*);

*void*\

**delete\_unrhdr**(*struct unrhdr \*uh*);

*int*\

**alloc\_unr**(*struct unrhdr \*uh*);

*int*\

**alloc\_unrl**(*struct unrhdr \*uh*);

*void*\

**free\_unr**(*struct unrhdr \*uh*, *u\_int item*);

## DESCRIPTION

The kernel unit number allocator is a generic facility, which allows to allocate unit numbers within a specified range.

- **new\_unrhdr**(*low*, *high*, *mutex*)

  Initialize a new unit number allocator entity. The *low* and *high* arguments specify minimum and maximum number of unit numbers. There is no cost associated with the range of unit numbers, so unless the resource really is finite, INT\_MAX can be used. If *mutex* is not NULL, it is used for locking when allocating and freeing units. Otherwise, internal mutex is used.

- **delete\_unrhdr**(*uh*)

  Destroy specified unit number allocator entity.

- **alloc\_unr**(*uh*)

  Return a new unit number. The lowest free number is always allocated. This function does not allocate memory and never sleeps, however it may block on a mutex. If no free unit numbers are left, -1 is returned.

- **alloc\_unrl**(*uh*)

  Same as **alloc\_unr**() except that mutex is assumed to be already locked and thus is not used.

- **free\_unr**(*uh*)

  Free a previously allocated unit number. This function may require allocating memory, and thus it can sleep. There is no pre-locked variant.

## CODE REFERENCES

The above functions are implemented in *sys/kern/subr\_unit.c*.

## HISTORY

Kernel unit number allocator first appeared in FreeBSD 5.5.

## AUTHORS

Kernel unit number allocator was written by Poul-Henning Kamp. This manpage was written by Gleb Smirnoff.
