42#include <sys/malloc.h>
46#define UMA_SMALLEST_UNIT 8
71typedef int (*
uma_ctor)(
void *mem,
int size,
void *arg,
int flags);
89typedef void (*
uma_dtor)(
void *mem,
int size,
void *arg);
108typedef int (*
uma_init)(
void *mem,
int size,
int flags);
130typedef int (*
uma_import)(
void *arg,
void **store,
int count,
int domain,
181 int align, uint32_t flags);
236#define UMA_ZONE_UNMANAGED 0x0001
240#define UMA_ZONE_ZINIT 0x0002
241#define UMA_ZONE_CONTIG 0x0004
245#define UMA_ZONE_NOTOUCH 0x0008
246#define UMA_ZONE_MALLOC 0x0010
247#define UMA_ZONE_NOFREE 0x0020
248#define UMA_ZONE_MTXCLASS 0x0040
249#define UMA_ZONE_VM 0x0080
253#define UMA_ZONE_NOTPAGE 0x0100
254#define UMA_ZONE_SECONDARY 0x0200
255#define UMA_ZONE_NOBUCKET 0x0400
256#define UMA_ZONE_MAXBUCKET 0x0800
257#define UMA_ZONE_CACHESPREAD 0x2000
263#define UMA_ZONE_NODUMP 0x4000
267#define UMA_ZONE_PCPU 0x8000
271#define UMA_ZONE_FIRSTTOUCH 0x10000
272#define UMA_ZONE_ROUNDROBIN 0x20000
273#define UMA_ZONE_SMR 0x40000
283#define UMA_ZONE_NOKASAN 0x80000
295#define UMA_ZONE_INHERIT \
296 (UMA_ZONE_NOTOUCH | UMA_ZONE_MALLOC | UMA_ZONE_NOFREE | \
297 UMA_ZONE_VM | UMA_ZONE_NOTPAGE | UMA_ZONE_PCPU | \
298 UMA_ZONE_FIRSTTOUCH | UMA_ZONE_ROUNDROBIN | UMA_ZONE_NOKASAN)
301#define UMA_ALIGN_PTR (sizeof(void *) - 1)
302#define UMA_ALIGN_LONG (sizeof(long) - 1)
303#define UMA_ALIGN_INT (sizeof(int) - 1)
304#define UMA_ALIGN_SHORT (sizeof(short) - 1)
305#define UMA_ALIGN_CHAR (sizeof(char) - 1)
306#define UMA_ALIGN_CACHE (0 - 1)
307#define UMA_ALIGNOF(type) (_Alignof(type) - 1)
309#define UMA_ANYDOMAIN -1
364static __inline
void *
370static __inline
void *
436typedef void *(*uma_alloc)(
uma_zone_t zone, vm_size_t size,
int domain,
437 uint8_t *pflag,
int wait);
450typedef void (*
uma_free)(
void *item, vm_size_t size, uint8_t pflag);
462#define UMA_RECLAIM_DRAIN 1
463#define UMA_RECLAIM_DRAIN_CPU 2
464#define UMA_RECLAIM_TRIM 3
644#define UMA_SLAB_BOOT 0x01
645#define UMA_SLAB_KERNEL 0x04
646#define UMA_SLAB_PRIV 0x08
693#define UMA_STREAM_VERSION 0x00000001
701#define UTH_MAX_NAME 32
702#define UTH_ZONE_SECONDARY 0x00000001
uint64_t _ups_reserved[5]
void uma_reclaim(int req)
void uma_zone_set_freef(uma_zone_t zone, uma_free freef)
void * uma_zalloc_pcpu_arg(uma_zone_t zone, void *arg, int flags)
void uma_zwait(uma_zone_t zone)
void uma_zone_reclaim(uma_zone_t, int req)
static __inline void uma_zfree_pcpu(uma_zone_t zone, void *item)
int(* uma_ctor)(void *mem, int size, void *arg, int flags)
int uma_zone_exhausted(uma_zone_t zone)
static __inline void uma_zfree(uma_zone_t zone, void *item)
void *(* uma_alloc)(uma_zone_t zone, vm_size_t size, int domain, uint8_t *pflag, int wait)
int(* uma_init)(void *mem, int size, int flags)
void * uma_zalloc_smr(uma_zone_t zone, int flags)
void * uma_zalloc_domain(uma_zone_t zone, void *arg, int domain, int flags)
void(* uma_free)(void *item, vm_size_t size, uint8_t pflag)
void uma_zdestroy(uma_zone_t zone)
uma_zone_t uma_zsecond_create(const char *name, uma_ctor ctor, uma_dtor dtor, uma_init zinit, uma_fini zfini, uma_zone_t primary)
void uma_reclaim_worker(void *)
int(* uma_import)(void *arg, void **store, int count, int domain, int flags)
void uma_zone_set_fini(uma_zone_t zone, uma_fini fini)
static __inline void * uma_zalloc_pcpu(uma_zone_t zone, int flags)
void uma_zone_set_maxaction(uma_zone_t zone, uma_maxaction_t)
unsigned long uma_limit(void)
unsigned long uma_size(void)
int uma_zone_get_max(uma_zone_t zone)
static __inline void * uma_zalloc(uma_zone_t zone, int flags)
void uma_zfree_arg(uma_zone_t zone, void *item, void *arg)
void uma_reclaim_wakeup(void)
void uma_zone_set_zinit(uma_zone_t zone, uma_init zinit)
struct uma_zone * uma_zone_t
smr_t uma_zone_get_smr(uma_zone_t zone)
void(* uma_release)(void *arg, void **store, int count)
int uma_zone_set_max(uma_zone_t zone, int nitems)
void(* uma_fini)(void *mem, int size)
void uma_zone_set_warning(uma_zone_t zone, const char *warning)
void uma_zone_reclaim_domain(uma_zone_t, int req, int domain)
void uma_prealloc(uma_zone_t zone, int itemcnt)
void uma_zfree_smr(uma_zone_t zone, void *item)
void uma_zfree_pcpu_arg(uma_zone_t zone, void *item, void *arg)
void(* uma_dtor)(void *mem, int size, void *arg)
void uma_zone_set_maxcache(uma_zone_t zone, int nitems)
uma_zone_t uma_zcache_create(const char *name, int size, uma_ctor ctor, uma_dtor dtor, uma_init zinit, uma_fini zfini, uma_import zimport, uma_release zrelease, void *arg, int flags)
void * uma_zalloc_arg(uma_zone_t zone, void *arg, int flags)
void uma_zone_set_smr(uma_zone_t zone, smr_t smr)
void uma_zone_set_init(uma_zone_t zone, uma_init uminit)
int uma_zone_get_cur(uma_zone_t zone)
void uma_set_align(int align)
uma_zone_t uma_zcreate(const char *name, size_t size, uma_ctor ctor, uma_dtor dtor, uma_init uminit, uma_fini fini, int align, uint32_t flags)
void uma_zone_set_zfini(uma_zone_t zone, uma_fini zfini)
void uma_reclaim_domain(int req, int domain)
void(* uma_maxaction_t)(uma_zone_t, int)
void uma_zone_reserve(uma_zone_t zone, int nitems)
size_t uma_zone_memory(uma_zone_t zone)
int uma_zone_reserve_kva(uma_zone_t zone, int nitems)
void uma_zone_set_allocf(uma_zone_t zone, uma_alloc allocf)