#include <sys/types.h>
Go to the source code of this file.
Defines | |
#define | VM_SLEEP 0x00000000 |
#define | VM_NOSLEEP 0x00000001 |
#define | VM_PANIC 0x00000002 |
#define | VM_PUSHPAGE 0x00000004 |
#define | VM_KMFLAGS 0x000000ff |
#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 |
#define | VMC_IDENTIFIER 0x00040000 |
#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 |
#define VM_MEMLOAD 0x00000800 |
#define VM_NEXTFIT 0x00000400 |
Referenced by vmem_alloc().
#define VM_NORELOC 0x00001000 |
#define VM_NOSLEEP 0x00000001 |
Referenced by memalign(), umem_cache_create(), and umem_init().
#define VM_PANIC 0x00000002 |
Referenced by vmem_alloc(), vmem_create(), vmem_init(), and vmem_xalloc().
#define VM_PUSHPAGE 0x00000004 |
#define VM_SLEEP 0x00000000 |
Referenced by vmem_init().
#define VMC_FLAGS 0xFFFF0000 |
#define VMC_IDENTIFIER 0x00040000 |
#define VMC_NO_QCACHE 0x00020000 |
#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) |
void* vmem_add | ( | vmem_t * | , | |
void * | , | |||
size_t | , | |||
int | ||||
) |
References ASSERT, cond_broadcast, mutex_lock, mutex_unlock, umem_panic(), vmem::vm_cv, vmem::vm_lock, and vmem_contains().
Referenced by vmem_create().
void* vmem_alloc | ( | vmem_t * | , | |
size_t | , | |||
int | ||||
) |
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, 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().
int vmem_contains | ( | vmem_t * | , | |
void * | , | |||
size_t | ||||
) |
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().
vmem_t* vmem_create | ( | const char * | , | |
void * | , | |||
size_t | , | |||
size_t | , | |||
vmem_alloc_t * | , | |||
vmem_free_t * | , | |||
vmem_t * | , | |||
size_t | , | |||
int | ||||
) |
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().
void vmem_destroy | ( | vmem_t * | ) |
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().
void vmem_free | ( | vmem_t * | , | |
void * | , | |||
size_t | ||||
) |
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().
size_t vmem_size | ( | vmem_t * | , | |
int | ||||
) |
References vmem_kstat::vk_mem_inuse, vmem_kstat::vk_mem_total, vmem::vm_kstat, VMEM_ALLOC, and VMEM_FREE.
Referenced by vmem_destroy().
void vmem_walk | ( | vmem_t * | , | |
int | , | |||
void(*)(void *, void *, size_t) | , | |||
void * | ||||
) |
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.
void* vmem_xalloc | ( | vmem_t * | , | |
size_t | , | |||
size_t | , | |||
size_t | , | |||
size_t | , | |||
void * | , | |||
void * | , | |||
int | ||||
) |
References _cond_wait, ASSERT, highbit(), lowbit(), MAX, MIN, mutex_lock, mutex_unlock, P2ALIGN, P2CROSS, P2NPHASE, P2PHASE, P2PHASEUP, P2ROUNDUP, umem_panic(), VM_BESTFIT, VM_FIRSTFIT, VM_PANIC, 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, 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().
vmem_t* vmem_xcreate | ( | const char * | , | |
void * | , | |||
size_t | , | |||
size_t | , | |||
vmem_ximport_t * | , | |||
vmem_free_t * | , | |||
vmem_t * | , | |||
size_t | , | |||
int | ||||
) |
void vmem_xfree | ( | vmem_t * | , | |
void * | , | |||
size_t | ||||
) |
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().