|
umem 1.0.1
|
#include <sys/types.h>Go to the source code of this file.
Macros | |
| #define | VM_SLEEP 0x00000000 /* same as KM_SLEEP */ |
| #define | VM_NOSLEEP 0x00000001 /* same as KM_NOSLEEP */ |
| #define | VM_PANIC 0x00000002 /* same as KM_PANIC */ |
| #define | VM_PUSHPAGE 0x00000004 /* same as KM_PUSHPAGE */ |
| #define | VM_KMFLAGS 0x000000ff /* flags that must match KM_* flags */ |
| #define | VM_BESTFIT 0x00000100 |
| #define | VM_FIRSTFIT 0x00000200 |
| #define | VM_NEXTFIT 0x00000400 |
| #define | VM_MEMLOAD 0x00000800 |
| #define | VM_NORELOC 0x00001000 |
| #define | VM_ABORT 0x00002000 |
| #define | VM_FLAGS 0x0000FFFF |
| #define | VMC_POPULATOR 0x00010000 |
| #define | VMC_NO_QCACHE 0x00020000 /* cannot use quantum caches */ |
| #define | VMC_IDENTIFIER 0x00040000 /* not backed by memory */ |
| #define | VMC_XALLOC 0x00080000 |
| #define | VMC_FLAGS 0xFFFF0000 |
| #define | VMEM_ALLOC 0x01 |
| #define | VMEM_FREE 0x02 |
| #define | VMEM_SPAN 0x10 |
| #define | VMEM_ROTOR 0x20 |
| #define | VMEM_WALKER 0x40 |
| #define | VMEM_REENTRANT 0x80000000 |
Typedefs | |
| typedef struct vmem | vmem_t |
| typedef void * | vmem_alloc_t(vmem_t *, size_t, int) |
| typedef void | vmem_free_t(vmem_t *, void *, size_t) |
| typedef void * | vmem_ximport_t(vmem_t *, size_t *, int) |
Functions | |
| vmem_t * | vmem_create (const char *, void *, size_t, size_t, vmem_alloc_t *, vmem_free_t *, vmem_t *, size_t, int) |
| vmem_t * | vmem_xcreate (const char *, void *, size_t, size_t, vmem_ximport_t *, vmem_free_t *, vmem_t *, size_t, int) |
| void | vmem_destroy (vmem_t *) |
| void * | vmem_alloc (vmem_t *, size_t, int) |
| void * | vmem_xalloc (vmem_t *, size_t, size_t, size_t, size_t, void *, void *, int) |
| void | vmem_free (vmem_t *, void *, size_t) |
| void | vmem_xfree (vmem_t *, void *, size_t) |
| void * | vmem_add (vmem_t *, void *, size_t, int) |
| int | vmem_contains (vmem_t *, void *, size_t) |
| void | vmem_walk (vmem_t *, int, void(*)(void *, void *, size_t), void *) |
| size_t | vmem_size (vmem_t *, int) |
| #define VM_ABORT 0x00002000 |
| #define VM_BESTFIT 0x00000100 |
Referenced by vmem_alloc(), vmem_init(), and vmem_xalloc().
| #define VM_FIRSTFIT 0x00000200 |
Referenced by vmem_alloc(), and vmem_xalloc().
| #define VM_FLAGS 0x0000FFFF |
| #define VM_KMFLAGS 0x000000ff /* flags that must match KM_* flags */ |
| #define VM_MEMLOAD 0x00000800 |
| #define VM_NEXTFIT 0x00000400 |
Referenced by vmem_alloc().
| #define VM_NORELOC 0x00001000 |
| #define VM_NOSLEEP 0x00000001 /* same as KM_NOSLEEP */ |
Referenced by memalign(), umem_cache_create(), umem_init(), vmem_alloc(), vmem_init(), and vmem_xalloc().
| #define VM_PANIC 0x00000002 /* same as KM_PANIC */ |
Referenced by vmem_alloc(), vmem_create(), vmem_init(), and vmem_xalloc().
| #define VM_PUSHPAGE 0x00000004 /* same as KM_PUSHPAGE */ |
| #define VM_SLEEP 0x00000000 /* same as KM_SLEEP */ |
Referenced by vmem_init().
| #define VMC_FLAGS 0xFFFF0000 |
| #define VMC_IDENTIFIER 0x00040000 /* not backed by memory */ |
| #define VMC_NO_QCACHE 0x00020000 /* cannot use quantum caches */ |
| #define VMC_POPULATOR 0x00010000 |
Referenced by vmem_create(), and vmem_init().
| #define VMC_XALLOC 0x00080000 |
| #define VMEM_ALLOC 0x01 |
Referenced by vmem_destroy(), and vmem_size().
| #define VMEM_FREE 0x02 |
Referenced by vmem_size(), vmem_xalloc(), and vmem_xfree().
| #define VMEM_REENTRANT 0x80000000 |
Referenced by vmem_walk().
| #define VMEM_ROTOR 0x20 |
Referenced by vmem_create().
| #define VMEM_SPAN 0x10 |
Referenced by vmem_contains(), vmem_create(), and vmem_xfree().
| #define VMEM_WALKER 0x40 |
Referenced by vmem_walk().
| typedef void * vmem_alloc_t(vmem_t *, size_t, int) |
| typedef void vmem_free_t(vmem_t *, void *, size_t) |
| typedef void * vmem_ximport_t(vmem_t *, size_t *, int) |
|
extern |
References ASSERT, cond_broadcast, mutex_lock, mutex_unlock, umem_panic(), vmem::vm_cv, vmem::vm_lock, and vmem_contains().
Referenced by vmem_create().
|
extern |
References _umem_cache_alloc(), ASSERT, highbit(), lowbit(), mutex_lock, mutex_unlock, P2ALIGN, UMEM_DEFAULT, VM_BESTFIT, VM_FIRSTFIT, vmem::vm_freelist, vmem::vm_freemap, vmem::vm_lock, vmem::vm_mtbf, VM_NEXTFIT, VM_NOSLEEP, vmem::vm_nsegfree, VM_PANIC, vmem::vm_qcache, vmem::vm_qcache_max, vmem::vm_qshift, vmem::vm_quantum, VMEM_FREELISTS, VMEM_MINFREE, vmem_mtbf, vmem_xalloc(), vmem_freelist::vs_knext, and vmem_seg::vs_start.
Referenced by _umem_alloc(), umem_cache_create(), umem_init(), vmem_create(), vmem_init(), and vmem_sbrk_arena().
|
extern |
References ASSERT, mutex_lock, mutex_unlock, vmem_kstat::vk_contains, vmem_kstat::vk_contains_search, vmem::vm_kstat, vmem::vm_lock, vmem::vm_seg0, VMEM_SPAN, vmem_seg::vs_end, vmem_seg::vs_knext, vmem_seg::vs_start, and vmem_seg::vs_type.
Referenced by _vmem_extend_alloc(), and vmem_add().
|
extern |
References ASSERT, atomic_add_32_nv, cond_init, highbit(), MIN, mutex_init, mutex_lock, mutex_unlock, UMC_NOTOUCH, UMC_QCACHE, umem_cache_create(), vmem_kstat::vk_source_id, vmem::vm_cflags, vmem::vm_cv, vmem::vm_freelist, vmem::vm_hash0, vmem::vm_hash_mask, vmem::vm_hash_shift, vmem::vm_hash_table, vmem::vm_id, vmem::vm_kstat, vmem::vm_lock, vmem::vm_name, vmem::vm_next, VM_PANIC, vmem::vm_qcache, vmem::vm_qcache_max, vmem::vm_qshift, vmem::vm_quantum, vmem::vm_rotor, vmem::vm_seg0, vmem::vm_source, vmem::vm_source_alloc, vmem::vm_source_free, VM_UMFLAGS, VMC_POPULATOR, vmem_add(), vmem_alloc(), vmem_destroy(), VMEM_FREELISTS, VMEM_HASH_INITIAL, VMEM_INITIAL, VMEM_INSERT, VMEM_NAMELEN, VMEM_NQCACHE_MAX, VMEM_ROTOR, VMEM_SPAN, vmem_seg::vs_anext, vmem_seg::vs_aprev, vmem_freelist::vs_end, vmem_seg::vs_knext, vmem_freelist::vs_knext, vmem_seg::vs_kprev, vmem_freelist::vs_kprev, and vmem_seg::vs_type.
Referenced by umem_init(), and vmem_init().
|
extern |
References cond_destroy, mutex_destroy, mutex_lock, mutex_unlock, umem_cache_destroy(), umem_printf(), vmem::vm_cv, vmem::vm_hash0, vmem::vm_hash_mask, vmem::vm_hash_table, vmem::vm_lock, vmem::vm_name, vmem::vm_next, vmem::vm_nsegfree, vmem::vm_qcache, vmem::vm_rotor, vmem::vm_seg0, VMEM_ALLOC, VMEM_DELETE, vmem_free(), VMEM_NQCACHE_MAX, vmem_size(), and vmem_seg::vs_anext.
Referenced by vmem_create().
|
extern |
References _umem_cache_free(), vmem::vm_qcache, vmem::vm_qcache_max, vmem::vm_qshift, and vmem_xfree().
Referenced by _umem_free(), umem_cache_destroy(), umem_init(), vmem_destroy(), vmem_init(), vmem_mmap_arena(), and vmem_sbrk_arena().
|
extern |
References vmem_kstat::vk_mem_inuse, vmem_kstat::vk_mem_total, vmem::vm_kstat, VMEM_ALLOC, and VMEM_FREE.
Referenced by vmem_destroy().
|
extern |
References mutex_lock, mutex_unlock, vmem::vm_lock, vmem::vm_seg0, VMEM_INSERT, VMEM_REENTRANT, VMEM_WALKER, vmem_seg::vs_anext, VS_SIZE, vmem_seg::vs_start, and vmem_seg::vs_type.
|
extern |
References _cond_wait, ASSERT, highbit(), lowbit(), MAX, MIN, mutex_lock, mutex_unlock, P2ALIGN, P2CROSS, P2NPHASE, P2PHASE, P2PHASEUP, P2ROUNDUP, umem_panic(), vmem_kstat::vk_fail, vmem_kstat::vk_search, vmem_kstat::vk_wait, VM_BESTFIT, vmem::vm_cv, VM_FIRSTFIT, vmem::vm_freelist, vmem::vm_freemap, vmem::vm_kstat, vmem::vm_lock, vmem::vm_mtbf, VM_NOSLEEP, vmem::vm_nsegfree, VM_PANIC, vmem::vm_quantum, vmem::vm_source, vmem::vm_source_alloc, VM_UMFLAGS, VMEM_FREE, VMEM_FREELISTS, VMEM_MINFREE, vmem_mtbf, vmem_reap(), VMEM_SEGS_PER_ALLOC_MAX, VMEM_SEGS_PER_EXACT_ALLOC, VMEM_SEGS_PER_SPAN_CREATE, vmem_seg::vs_end, vmem_seg::vs_knext, vmem_freelist::vs_knext, VS_SIZE, vmem_seg::vs_start, and vmem_seg::vs_type.
Referenced by _umem_alloc_align(), memalign(), umem_cache_create(), vmem_alloc(), and vmem_init().
|
extern |
|
extern |
References ASSERT, mutex_lock, mutex_unlock, P2ROUNDUP, vmem::vm_lock, vmem::vm_quantum, vmem::vm_source, vmem::vm_source_free, VMEM_FREE, VMEM_SPAN, vmem_seg::vs_anext, vmem_seg::vs_aprev, vmem_seg::vs_end, vmem_seg::vs_import, VS_SIZE, vmem_seg::vs_start, and vmem_seg::vs_type.
Referenced by _umem_free_align(), umem_cache_create(), and vmem_free().