#include "config.h"
#include <sys/vmem_impl_user.h>
#include <sys/sysmacros.h>
#include <stdio.h>
#include <strings.h>
#include "vmem_base.h"
#include "umem_base.h"
Defines | |
#define | VMEM_INITIAL 6 |
#define | VMEM_SEG_INITIAL 100 |
#define | VMEM_SEGS_PER_SPAN_CREATE 2 |
#define | VMEM_SEGS_PER_EXACT_ALLOC 0 |
#define | VMEM_SEGS_PER_LEFT_ALLOC 1 |
#define | VMEM_SEGS_PER_RIGHT_ALLOC 1 |
#define | VMEM_SEGS_PER_MIDDLE_ALLOC 2 |
#define | VMEM_SEGS_PER_ALLOC_MAX (VMEM_SEGS_PER_SPAN_CREATE + VMEM_SEGS_PER_MIDDLE_ALLOC) |
#define | VMEM_POPULATE_SEGS_PER_ARENA 4 |
#define | VMEM_POPULATE_LOCKS 1 |
#define | VMEM_POPULATE_RESERVE (VMEM_POPULATE_SEGS_PER_ARENA * VMEM_POPULATE_LOCKS) |
#define | VMEM_MINFREE (VMEM_POPULATE_RESERVE + VMEM_SEGS_PER_ALLOC_MAX) |
#define | IN_POPULATE() (vmem_nosleep_lock.vmpl_thr == thr_self()) |
#define | VMEM_INSERT(vprev, vsp, type) |
#define | VMEM_DELETE(vsp, type) |
Functions | |
int | _cond_wait (cond_t *cv, mutex_t *mutex) |
void | vmem_reap (void) |
void * | vmem_xalloc (vmem_t *vmp, size_t size, size_t align, size_t phase, size_t nocross, void *minaddr, void *maxaddr, int vmflag) |
void | vmem_xfree (vmem_t *vmp, void *vaddr, size_t size) |
void * | vmem_alloc (vmem_t *vmp, size_t size, int vmflag) |
void | vmem_free (vmem_t *vmp, void *vaddr, size_t size) |
int | vmem_contains (vmem_t *vmp, void *vaddr, size_t size) |
void * | vmem_add (vmem_t *vmp, void *vaddr, size_t size, int vmflag) |
void * | _vmem_extend_alloc (vmem_t *vmp, void *vaddr, size_t size, size_t alloc, int vmflag) |
void | vmem_walk (vmem_t *vmp, int typemask, void(*func)(void *, void *, size_t), void *arg) |
size_t | vmem_size (vmem_t *vmp, int typemask) |
vmem_t * | vmem_create (const char *name, void *base, size_t size, size_t quantum, vmem_alloc_t *afunc, vmem_free_t *ffunc, vmem_t *source, size_t qcache_max, int vmflag) |
void | vmem_destroy (vmem_t *vmp) |
void | vmem_update (void *dummy) |
void | vmem_startup (void) |
vmem_t * | vmem_init (const char *parent_name, size_t parent_quantum, vmem_alloc_t *parent_alloc, vmem_free_t *parent_free, const char *heap_name, void *heap_start, size_t heap_size, size_t heap_quantum, vmem_alloc_t *heap_alloc, vmem_free_t *heap_free) |
void | vmem_no_debug (void) |
void | vmem_lockup (void) |
void | vmem_release (void) |
Variables | |
vmem_t * | vmem_heap |
vmem_alloc_t * | vmem_heap_alloc |
vmem_free_t * | vmem_heap_free |
uint32_t | vmem_mtbf |
size_t | vmem_seg_size = sizeof (vmem_seg_t) |
#define IN_POPULATE | ( | ) | (vmem_nosleep_lock.vmpl_thr == thr_self()) |
#define VMEM_DELETE | ( | vsp, | |||
type | ) |
Value:
{ \ vmem_seg_t *vprev = (vsp)->vs_##type##prev; \ vmem_seg_t *vnext = (vsp)->vs_##type##next; \ (vprev)->vs_##type##next = (vnext); \ (vnext)->vs_##type##prev = (vprev); \ }
#define VMEM_INITIAL 6 |
#define VMEM_INSERT | ( | vprev, | |||
vsp, | |||||
type | ) |
Value:
{ \ vmem_seg_t *vnext = (vprev)->vs_##type##next; \ (vsp)->vs_##type##next = (vnext); \ (vsp)->vs_##type##prev = (vprev); \ (vprev)->vs_##type##next = (vsp); \ (vnext)->vs_##type##prev = (vsp); \ }
#define VMEM_MINFREE (VMEM_POPULATE_RESERVE + VMEM_SEGS_PER_ALLOC_MAX) |
#define VMEM_POPULATE_LOCKS 1 |
#define VMEM_POPULATE_RESERVE (VMEM_POPULATE_SEGS_PER_ARENA * VMEM_POPULATE_LOCKS) |
#define VMEM_POPULATE_SEGS_PER_ARENA 4 |
#define VMEM_SEG_INITIAL 100 |
#define VMEM_SEGS_PER_ALLOC_MAX (VMEM_SEGS_PER_SPAN_CREATE + VMEM_SEGS_PER_MIDDLE_ALLOC) |
#define VMEM_SEGS_PER_EXACT_ALLOC 0 |
#define VMEM_SEGS_PER_LEFT_ALLOC 1 |
#define VMEM_SEGS_PER_MIDDLE_ALLOC 2 |
#define VMEM_SEGS_PER_RIGHT_ALLOC 1 |
#define VMEM_SEGS_PER_SPAN_CREATE 2 |
void* _vmem_extend_alloc | ( | vmem_t * | vmp, | |
void * | vaddr, | |||
size_t | size, | |||
size_t | alloc, | |||
int | vmflag | |||
) |
void* vmem_add | ( | vmem_t * | vmp, | |
void * | vaddr, | |||
size_t | size, | |||
int | vmflag | |||
) |
void* vmem_alloc | ( | vmem_t * | vmp, | |
size_t | size, | |||
int | vmflag | |||
) |
int vmem_contains | ( | vmem_t * | vmp, | |
void * | vaddr, | |||
size_t | size | |||
) |
vmem_t* vmem_create | ( | const char * | name, | |
void * | base, | |||
size_t | size, | |||
size_t | quantum, | |||
vmem_alloc_t * | afunc, | |||
vmem_free_t * | ffunc, | |||
vmem_t * | source, | |||
size_t | qcache_max, | |||
int | vmflag | |||
) |
void vmem_destroy | ( | vmem_t * | vmp | ) |
void vmem_free | ( | vmem_t * | vmp, | |
void * | vaddr, | |||
size_t | size | |||
) |
vmem_t* vmem_init | ( | const char * | parent_name, | |
size_t | parent_quantum, | |||
vmem_alloc_t * | parent_alloc, | |||
vmem_free_t * | parent_free, | |||
const char * | heap_name, | |||
void * | heap_start, | |||
size_t | heap_size, | |||
size_t | heap_quantum, | |||
vmem_alloc_t * | heap_alloc, | |||
vmem_free_t * | heap_free | |||
) |
void vmem_lockup | ( | void | ) |
void vmem_no_debug | ( | void | ) |
void vmem_reap | ( | void | ) |
void vmem_release | ( | void | ) |
size_t vmem_size | ( | vmem_t * | vmp, | |
int | typemask | |||
) |
void vmem_startup | ( | void | ) |
void vmem_update | ( | void * | dummy | ) |
void vmem_walk | ( | vmem_t * | vmp, | |
int | typemask, | |||
void(*)(void *, void *, size_t) | func, | |||
void * | arg | |||
) |
void* vmem_xalloc | ( | vmem_t * | vmp, | |
size_t | size, | |||
size_t | align, | |||
size_t | phase, | |||
size_t | nocross, | |||
void * | minaddr, | |||
void * | maxaddr, | |||
int | vmflag | |||
) |
void vmem_xfree | ( | vmem_t * | vmp, | |
void * | vaddr, | |||
size_t | size | |||
) |
uint32_t vmem_mtbf |
size_t vmem_seg_size = sizeof (vmem_seg_t) |