vmem.c File Reference

#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_tvmem_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_tvmem_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_tvmem_heap
vmem_alloc_tvmem_heap_alloc
vmem_free_tvmem_heap_free
uint32_t vmem_mtbf
size_t vmem_seg_size = sizeof (vmem_seg_t)

Define Documentation

 
#define IN_POPULATE (  )     (vmem_nosleep_lock.vmpl_thr == thr_self())

Referenced by vmem_reap().

#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);                             \
}

Referenced by vmem_destroy().

#define VMEM_INITIAL   6

Referenced by vmem_create().

#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);                               \
}

Referenced by vmem_create(), and vmem_walk().

#define VMEM_MINFREE   (VMEM_POPULATE_RESERVE + VMEM_SEGS_PER_ALLOC_MAX)

Referenced by vmem_alloc(), and vmem_xalloc().

#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

Referenced by vmem_init().

#define VMEM_SEGS_PER_ALLOC_MAX   (VMEM_SEGS_PER_SPAN_CREATE + VMEM_SEGS_PER_MIDDLE_ALLOC)

Referenced by vmem_xalloc().

#define VMEM_SEGS_PER_EXACT_ALLOC   0

Referenced by vmem_xalloc().

#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

Referenced by vmem_xalloc().


Function Documentation

int _cond_wait ( cond_t cv,
mutex_t mutex 
)

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   ) 

References offsetof, P2ROUNDUP, and vmem_seg_size.

Referenced by umem_init().

void vmem_reap ( void   ) 

References IN_POPULATE, and umem_reap().

Referenced by vmem_xalloc().

void vmem_release ( void   ) 

size_t vmem_size ( vmem_t vmp,
int  typemask 
)

void vmem_startup ( void   ) 

References vmem_heap_alloc, and vmem_heap_free.

Referenced by umem_startup().

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 
)


Variable Documentation

Referenced by vmem_heap_arena().

uint32_t vmem_mtbf

Referenced by vmem_alloc(), and vmem_xalloc().

size_t vmem_seg_size = sizeof (vmem_seg_t)

Referenced by vmem_no_debug().


Generated on Wed Jul 30 10:33:56 2008 for umem by  doxygen 1.5.6