1*7295aeafSKonstantin Belousov.\" SPDX-License-Identifier: BSD-2-Clause 2*7295aeafSKonstantin Belousov.\" 3*7295aeafSKonstantin Belousov.\" Copyright (c) 2025 The FreeBSD Foundation 4*7295aeafSKonstantin Belousov.\" 5*7295aeafSKonstantin Belousov.\" This documentation was written by 6*7295aeafSKonstantin Belousov.\" Konstantin Belousov <kib@FreeBSD.org> under sponsorship 7*7295aeafSKonstantin Belousov.\" from the FreeBSD Foundation. 8*7295aeafSKonstantin Belousov.\" 9*7295aeafSKonstantin Belousov.Dd October 16, 2025 10*7295aeafSKonstantin Belousov.Dt LIBUVMEM 3 11*7295aeafSKonstantin Belousov.Os 12*7295aeafSKonstantin Belousov.Sh NAME 13*7295aeafSKonstantin Belousov.Nm libuvmem 14*7295aeafSKonstantin Belousov.Nd userspace general purpose resource allocator 15*7295aeafSKonstantin Belousov.Sh SYNOPSIS 16*7295aeafSKonstantin Belousov.Lb libuvmem 17*7295aeafSKonstantin Belousov.In sys/vmem.h 18*7295aeafSKonstantin Belousov.Sh DESCRIPTION 19*7295aeafSKonstantin BelousovThe 20*7295aeafSKonstantin Belousov.Nm 21*7295aeafSKonstantin Belousovis a general purpose resource allocator. 22*7295aeafSKonstantin BelousovIt is a port of the kernel facility of the similar name 23*7295aeafSKonstantin Belousov.Nm vmem . 24*7295aeafSKonstantin Belousov.Pp 25*7295aeafSKonstantin BelousovRefer to the description of the kernel allocator 26*7295aeafSKonstantin Belousov.Xr vmem 9 27*7295aeafSKonstantin Belousovto get the documentation for it. 28*7295aeafSKonstantin Belousov.Sh NOTES 29*7295aeafSKonstantin BelousovThe 30*7295aeafSKonstantin Belousov.Dq quantum cache 31*7295aeafSKonstantin Belousovfeature is not implemented for userspace, and the 32*7295aeafSKonstantin Belousov.Fa quantum 33*7295aeafSKonstantin Belousovand 34*7295aeafSKonstantin Belousov.Fa qcache_max 35*7295aeafSKonstantin Belousovarguments of the 36*7295aeafSKonstantin Belousov.Fn vmem_create 37*7295aeafSKonstantin Belousovfunction are ignored. 38*7295aeafSKonstantin Belousov.Pp 39*7295aeafSKonstantin BelousovThe library internally uses 40*7295aeafSKonstantin Belousov.Xr malloc 3 41*7295aeafSKonstantin Belousovto allocate structures tracking allocations. 42*7295aeafSKonstantin Belousov.Pp 43*7295aeafSKonstantin BelousovThe allocator is thread-safe. 44*7295aeafSKonstantin BelousovLocks for separate 45*7295aeafSKonstantin Belousov.Nm vmem's 46*7295aeafSKonstantin Belousovare independent between each other. 47*7295aeafSKonstantin Belousov.Pp 48*7295aeafSKonstantin BelousovThe supported 49*7295aeafSKonstantin Belousov.Fa flags 50*7295aeafSKonstantin Belousovfor the 51*7295aeafSKonstantin Belousov.Fn vmem_xalloc 52*7295aeafSKonstantin Belousovfunction are 53*7295aeafSKonstantin Belousov.Bl -bullet 54*7295aeafSKonstantin Belousov.It 55*7295aeafSKonstantin Belousov.Dv M_NOWAIT 56*7295aeafSKonstantin Belousov.It 57*7295aeafSKonstantin Belousov.Dv M_FIRSTFIT 58*7295aeafSKonstantin Belousov.It 59*7295aeafSKonstantin Belousov.Dv M_BESTFIT 60*7295aeafSKonstantin Belousov.It 61*7295aeafSKonstantin Belousov.Dv M_NEXTFIT 62*7295aeafSKonstantin Belousov.El 63*7295aeafSKonstantin Belousov.Sh AUTHORS 64*7295aeafSKonstantin BelousovSee 65*7295aeafSKonstantin Belousov.Xr vmem 9 66*7295aeafSKonstantin Belousovfor the history of the kernel allocator. 67*7295aeafSKonstantin Belousov.Pp 68*7295aeafSKonstantin BelousovThe userspace port for 69*7295aeafSKonstantin Belousov.Fx 70*7295aeafSKonstantin Belousovwas done by 71*7295aeafSKonstantin Belousov.An Konstantin Belousov Aq Mt kib@FreeBSD.org . 72