36#ifndef _RDS_PRIVATE_H_
37#define _RDS_PRIVATE_H_
71#elif defined(RVM_USEPT)
77#define RVM_MUTEX struct mutex
78#define RVM_CONDITION struct condition
81#define START_CRITICAL mutex_lock(&heap_lock)
82#define LEAVE_CRITICAL_SECTION goto end_critical
86 mutex_unlock(&heap_lock)
92#define FREE_GUARD 0x345298af
93#define ALLOC_GUARD 0x783bd92c
94#define END_GUARD 0xfd10a32e
96#define RDS_BLOCK_HDR_SIZE (sizeof(block_size_t) + 2 * sizeof(guard_t))
97#define BLOCK_END(bp) \
98 ((guard_t *)((char *)(bp) + ((bp)->size * RDS_CHUNK_SIZE)) - 1)
100#define USER_BLOCK(bp) ((char *)&((bp)->prev))
101#define BLOCK_HDR(bp) \
102 ((free_block_t *)((char *)(bp) - (sizeof(block_size_t) + sizeof(guard_t))))
113#define FREE_LIST_GUARD 0xad938945
120#define NEXT_CONSECUTIVE_BLOCK(bp) \
121 ((free_block_t *)((char *)(bp) + ((bp)->size * RDS_CHUNK_SIZE)))
123#define HEAP_LIST_GROWSIZE 20
125#define RDS_HEAP_VERSION "Dynamic Allocator Using Rvm Release 0.1 1 Dec 1990"
126#define RDS_VERSION_MAX 80
135 unsigned long dummy[10];
147#define HEAP_INIT (RecoverableHeapStartAddress != 0)
148#define RDS_VERSION_STAMP (RecoverableHeapStartAddress->version)
149#define RDS_HEAPLENGTH (RecoverableHeapStartAddress->heaplength)
150#define RDS_CHUNK_SIZE (RecoverableHeapStartAddress->chunk_size)
151#define RDS_FREE_LIST (RecoverableHeapStartAddress->lists)
152#define RDS_NLISTS (RecoverableHeapStartAddress->nlists)
153#define RDS_MAXLIST (RecoverableHeapStartAddress->maxlist)
154#define RDS_STATS (RecoverableHeapStartAddress->stats)
155#define RDS_HIGH_ADDR (RecoverableHeapHighAddress)
161#define BCOPY(S, D, L) memcpy((D), (S), (L))
162#define BZERO(D, L) memset((D), 0, (L))
164#define BCOPY(S, D, L) bcopy((S), (D), (L))
165#define BZERO(D, L) bzero((D), (L))
RVM_MUTEX heap_lock
Definition: rds_start.c:59
int merge_with_next_free(free_block_t *fbp, rvm_tid_t *tid, int *err)
Definition: rds_coalesce.c:32
#define RVM_MUTEX
Definition: rds_private.h:77
int print_heap()
Definition: rds_util.c:98
heap_header_t * RecoverableHeapStartAddress
Definition: rds_start.c:40
free_block_t * RecoverableHeapHighAddress
Definition: rds_start.c:46
FILE * rds_tracing_file
Definition: rds_stats.c:23
unsigned long guard_t
Definition: rds_private.h:105
unsigned long block_size_t
Definition: rds_private.h:104
#define RDS_VERSION_MAX
Definition: rds_private.h:126
int rds_tracing
Definition: rds_stats.c:22
free_block_t * get_block()
void coalesce(rvm_tid_t *tid, int *err)
Definition: rds_coalesce.c:85
Definition: rds_private.h:107
struct fbt * prev
Definition: rds_private.h:110
guard_t type
Definition: rds_private.h:108
block_size_t size
Definition: rds_private.h:109
struct fbt * next
Definition: rds_private.h:110
Definition: rds_private.h:115
free_block_t * head
Definition: rds_private.h:117
guard_t guard
Definition: rds_private.h:116