|
umem
1.0.1
|
#include "config.h"#include <umem_impl.h>#include <sys/vmem_impl_user.h>#include "umem_base.h"#include "vmem_base.h"#include <sys/sysmacros.h>#include <errno.h>#include <limits.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <signal.h>#include <unistd.h>#include "misc.h"Macros | |
| #define | UMEM_VMFLAGS(umflag) (VM_NOSLEEP) |
| #define | NUM_ALLOC_SIZES (sizeof (umem_alloc_sizes) / sizeof (*umem_alloc_sizes)) |
| #define | UMEM_MAXBUF 16384 |
| #define | CPUHINT() (_thr_self()) |
| #define | CPUHINT_MAX() INT_MAX |
| #define | CPU(mask) (umem_cpus + (CPUHINT() & (mask))) |
| #define | IN_UPDATE() |
| #define | IN_REAP() IN_UPDATE() |
| #define | ALLOC_TABLE_4 &umem_null_cache, &umem_null_cache, &umem_null_cache, &umem_null_cache |
| #define | ALLOC_TABLE_64 |
| #define | ALLOC_TABLE_1024 |
| #define | UMERR_MODIFIED 0 /* buffer modified while on freelist */ |
| #define | UMERR_REDZONE 1 /* redzone violation (write past end of buf) */ |
| #define | UMERR_DUPFREE 2 /* freed a buffer twice */ |
| #define | UMERR_BADADDR 3 /* freed a bad (unallocated) address */ |
| #define | UMERR_BADBUFTAG 4 /* buftag corrupted */ |
| #define | UMERR_BADBUFCTL 5 /* bufctl corrupted */ |
| #define | UMERR_BADCACHE 6 /* freed a buffer to the wrong cache */ |
| #define | UMERR_BADSIZE 7 /* alloc size != free size */ |
| #define | UMERR_BADBASE 8 /* buffer base address wrong */ |
| #define | UMEM_AUDIT(lp, cp, bcp) |
Functions | |
| thread_t | _thr_self (void) |
| int | _cond_wait (cond_t *cv, mutex_t *mutex) |
| void | umem_cache_applyall (void(*func)(umem_cache_t *)) |
| void | umem_nofail_callback (umem_nofail_callback_t *cb) |
| void * | _umem_cache_alloc (umem_cache_t *cp, int umflag) |
| void | _umem_cache_free (umem_cache_t *cp, void *buf) |
| void * | _umem_zalloc (size_t size, int umflag) |
| void * | _umem_alloc (size_t size, int umflag) |
| void * | _umem_alloc_align (size_t size, size_t align, int umflag) |
| void | _umem_free (void *buf, size_t size) |
| void | _umem_free_align (void *buf, size_t size) |
| void | umem_cache_update (umem_cache_t *cp) |
| void | umem_process_updates (void) |
| void | umem_reap (void) |
| umem_cache_t * | umem_cache_create (char *name, size_t bufsize, size_t align, umem_constructor_t *constructor, umem_destructor_t *destructor, umem_reclaim_t *reclaim, void *private, vmem_t *vmp, int cflags) |
| void | umem_cache_destroy (umem_cache_t *cp) |
| void | umem_startup (caddr_t start, size_t len, size_t pagesize, caddr_t minstack, caddr_t maxstack) |
| int | umem_init (void) |
| #define ALLOC_TABLE_1024 |
| #define ALLOC_TABLE_4 &umem_null_cache, &umem_null_cache, &umem_null_cache, &umem_null_cache |
| #define ALLOC_TABLE_64 |
| #define CPU | ( | mask | ) | (umem_cpus + (CPUHINT() & (mask))) |
Referenced by _umem_cache_alloc(), and _umem_cache_free().
| #define CPUHINT | ( | ) | (_thr_self()) |
| #define CPUHINT_MAX | ( | ) | INT_MAX |
| #define IN_REAP | ( | ) | IN_UPDATE() |
| #define IN_UPDATE | ( | ) |
| #define NUM_ALLOC_SIZES (sizeof (umem_alloc_sizes) / sizeof (*umem_alloc_sizes)) |
| #define UMEM_AUDIT | ( | lp, | |
| cp, | |||
| bcp | |||
| ) |
| #define UMEM_MAXBUF 16384 |
Referenced by malloc(), and memalign().
| #define UMEM_VMFLAGS | ( | umflag | ) | (VM_NOSLEEP) |
| #define UMERR_BADADDR 3 /* freed a bad (unallocated) address */ |
| #define UMERR_BADBASE 8 /* buffer base address wrong */ |
| #define UMERR_BADBUFCTL 5 /* bufctl corrupted */ |
| #define UMERR_BADBUFTAG 4 /* buftag corrupted */ |
| #define UMERR_BADCACHE 6 /* freed a buffer to the wrong cache */ |
| #define UMERR_BADSIZE 7 /* alloc size != free size */ |
| #define UMERR_DUPFREE 2 /* freed a buffer twice */ |
| #define UMERR_MODIFIED 0 /* buffer modified while on freelist */ |
| #define UMERR_REDZONE 1 /* redzone violation (write past end of buf) */ |
Referenced by umem_init().
| thread_t _thr_self | ( | void | ) |
| void* _umem_alloc | ( | size_t | size, |
| int | umflag | ||
| ) |
References UMEM_ALIGN_SHIFT.
Referenced by malloc().
| void* _umem_alloc_align | ( | size_t | size, |
| size_t | align, | ||
| int | umflag | ||
| ) |
References ASSERT, UMEM_ALIGN, umem_init(), and umem_memalign_arena.
| void* _umem_cache_alloc | ( | umem_cache_t * | cp, |
| int | umflag | ||
| ) |
| void _umem_cache_free | ( | umem_cache_t * | cp, |
| void * | buf | ||
| ) |
References umem_cache::cache_cpu_mask, umem_cpu_cache::cc_flags, CPU, UMEM_CPU_CACHE, and UMF_BUFTAG.
Referenced by vmem_free().
| void _umem_free | ( | void * | buf, |
| size_t | size | ||
| ) |
References UMEM_ALIGN_SHIFT.
| void _umem_free_align | ( | void * | buf, |
| size_t | size | ||
| ) |
References umem_memalign_arena, and vmem_xfree().
| void* _umem_zalloc | ( | size_t | size, |
| int | umflag | ||
| ) |
References UMEM_ALIGN_SHIFT.
| void umem_cache_applyall | ( | void(*)(umem_cache_t *) | func | ) |
References umem_cache::cache_next, mutex_lock, mutex_unlock, umem_cache_lock, and umem_null_cache.
| umem_cache_t* umem_cache_create | ( | char * | name, |
| size_t | bufsize, | ||
| size_t | align, | ||
| umem_constructor_t * | constructor, | ||
| umem_destructor_t * | destructor, | ||
| umem_reclaim_t * | reclaim, | ||
| void * | private, | ||
| vmem_t * | vmp, | ||
| int | cflags | ||
| ) |
References ASSERT, P2NPHASE, thr_self, UMC_INTERNAL, UMC_QCACHE, UMEM_CACHE_SIZE, UMEM_CPU_CACHE_SIZE, umem_init(), umem_init_thr, umem_max_ncpus, UMEM_READY, and umem_ready.
| void umem_cache_destroy | ( | umem_cache_t * | cp | ) |
References umem_cache::cache_next, umem_cache::cache_prev, mutex_lock, mutex_unlock, and umem_cache_lock.
| void umem_cache_update | ( | umem_cache_t * | cp | ) |
| int umem_init | ( | void | ) |
References _cond_wait(), ASSERT, issetugid, mutex_lock, mutex_unlock, thr_self, UMEM_CPU_CACHE_SIZE, umem_flags, umem_get_max_ncpus(), umem_init_cv, umem_init_env_ready, umem_init_lock, umem_init_thr, umem_max_ncpus, umem_mtbf, umem_panic(), umem_process_envvars(), UMEM_READY, umem_ready, UMEM_READY_INIT_FAILED, UMEM_READY_INITING, UMEM_READY_STARTUP, umem_setup_envvars(), UMF_AUDIT, and vmem_no_debug().
Referenced by _umem_alloc_align(), memalign(), umem_cache_create(), and vmem_heap_arena().
| void umem_nofail_callback | ( | umem_nofail_callback_t * | cb | ) |
| void umem_process_updates | ( | void | ) |
| void umem_reap | ( | void | ) |
Referenced by vmem_reap().
| void umem_startup | ( | caddr_t | start, |
| size_t | len, | ||
| size_t | pagesize, | ||
| caddr_t | minstack, | ||
| caddr_t | maxstack | ||
| ) |
References umem_forkhandler_init(), umem_init_env_ready, umem_max_stack, umem_min_stack, umem_ready, and UMEM_READY_STARTUP.
Referenced by __attribute__(), and main().
| size_t pagesize |
Referenced by umem_type_init(), valloc(), and vmem_mmap_arena().
| uint_t umem_abort = 1 |
| struct { ... } umem_abort_info |
| mutex_t umem_cache_lock = DEFAULTMUTEX |
Referenced by umem_cache_applyall(), umem_cache_destroy(), and umem_cache_update().
| umem_log_header_t* umem_content_log |
| size_t umem_content_log_size |
| size_t umem_content_maxsave = 256 |
| uint_t umem_depot_contention = 2 |
| umem_log_header_t* umem_failure_log |
| size_t umem_failure_log_size |
| uint_t umem_flags = 0 |
Referenced by umem_init().
| mutex_t umem_flags_lock = DEFAULTMUTEX |
Referenced by umem_init().
| int umem_init_env_ready |
Referenced by umem_init(), and umem_startup().
| mutex_t umem_init_lock = DEFAULTMUTEX |
Referenced by umem_init().
| thread_t umem_init_thr |
Referenced by umem_cache_create(), umem_init(), and vmem_heap_arena().
| size_t umem_lite_maxalign = 1024 |
| size_t umem_lite_minsize = 0 |
| uint_t umem_logging = 0 |
| uint32_t umem_max_ncpus |
Referenced by umem_cache_create(), and umem_init().
| caddr_t umem_max_stack |
Referenced by getpcstack(), and umem_startup().
| size_t umem_maxverify |
| vmem_t* umem_memalign_arena |
Referenced by _umem_alloc_align(), _umem_free_align(), and memalign().
| caddr_t umem_min_stack |
Referenced by getpcstack(), and umem_startup().
| size_t umem_minfirewall |
| uint32_t umem_mtbf = 0 |
Referenced by umem_init().
| umem_cache_t umem_null_cache |
Referenced by umem_cache_applyall(), and umem_process_updates().
| uint_t umem_output = 0 |
Referenced by log_message(), and umem_error_enter().
| int umem_ready = UMEM_READY_STARTUP |
Referenced by umem_cache_create(), umem_init(), umem_startup(), and vmem_heap_arena().
| uint32_t umem_reap_interval = 10 |
| volatile hrtime_t umem_reap_next |
| volatile uint32_t umem_reaping |
| umem_log_header_t* umem_slab_log |
| size_t umem_slab_log_size |
| volatile thread_t umem_st_update_thr |
| uint32_t umem_stack_depth = 15 |
| umem_log_header_t* umem_transaction_log |
| size_t umem_transaction_log_size |
| mutex_t umem_update_lock = DEFAULTMUTEX |
Referenced by umem_create_update_thread(), and umem_process_updates().
| struct timeval umem_update_next |
| thread_t umem_update_thr |
Referenced by umem_create_update_thread().
| umem_bufctl_t* ump_bufctl |
| void* ump_buffer |
| umem_cache_t* ump_cache |
| int ump_error |
| void* ump_realbuf |
| umem_cache_t* ump_realcache |
| umem_slab_t* ump_slab |
| hrtime_t ump_timestamp |
1.8.14