Lines 53-66
Link Here
|
53 |
int a; |
53 |
int a; |
54 |
|
54 |
|
55 |
#if defined(HAVE_MMAP) && defined(MAP_ANON) |
55 |
#if defined(HAVE_MMAP) && defined(MAP_ANON) |
56 |
blp = mmap(NULL, sizeof(mowgli_heap_t) + (bh->alloc_size * bh->mowgli_heap_elems), |
56 |
blp = mmap(NULL, sizeof(mowgli_block_t) + (bh->alloc_size * bh->mowgli_heap_elems), |
57 |
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); |
57 |
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); |
58 |
#else |
58 |
#else |
59 |
blp = mowgli_alloc(sizeof(mowgli_heap_t) + (bh->alloc_size * bh->mowgli_heap_elems)); |
59 |
blp = mowgli_alloc(sizeof(mowgli_block_t) + (bh->alloc_size * bh->mowgli_heap_elems)); |
60 |
#endif |
60 |
#endif |
61 |
block = (mowgli_block_t *)blp; |
61 |
block = (mowgli_block_t *)blp; |
62 |
|
62 |
|
63 |
offset = blp + sizeof(mowgli_heap_t); |
63 |
offset = blp + sizeof(mowgli_block_t); |
64 |
block->data = offset; |
64 |
block->data = offset; |
65 |
block->heap = bh; |
65 |
block->heap = bh; |
66 |
|
66 |
|
Lines 93-99
Link Here
|
93 |
mowgli_node_delete(&b->node, &heap->blocks); |
93 |
mowgli_node_delete(&b->node, &heap->blocks); |
94 |
|
94 |
|
95 |
#ifdef HAVE_MMAP |
95 |
#ifdef HAVE_MMAP |
96 |
munmap(b, sizeof(mowgli_heap_t) + (heap->alloc_size * heap->mowgli_heap_elems)); |
96 |
munmap(b, sizeof(mowgli_block_t) + (heap->alloc_size * heap->mowgli_heap_elems)); |
97 |
#else |
97 |
#else |
98 |
mowgli_free(b); |
98 |
mowgli_free(b); |
99 |
#endif |
99 |
#endif |
Lines 140-146
Link Here
|
140 |
{ |
140 |
{ |
141 |
mowgli_node_t *n, *fn; |
141 |
mowgli_node_t *n, *fn; |
142 |
mowgli_block_t *b; |
142 |
mowgli_block_t *b; |
143 |
|
143 |
|
144 |
/* no free space? */ |
144 |
/* no free space? */ |
145 |
if (heap->free_elems == 0) |
145 |
if (heap->free_elems == 0) |
146 |
{ |
146 |
{ |
Lines 196-202
Link Here
|
196 |
{ |
196 |
{ |
197 |
/* mark it as free */ |
197 |
/* mark it as free */ |
198 |
mowgli_node_move(dn, &b->used_list, &b->free_list); |
198 |
mowgli_node_move(dn, &b->used_list, &b->free_list); |
199 |
|
199 |
|
200 |
/* keep count */ |
200 |
/* keep count */ |
201 |
heap->free_elems++; |
201 |
heap->free_elems++; |
202 |
#ifdef HEAP_DEBUG |
202 |
#ifdef HEAP_DEBUG |