Lines Matching refs:heap
3 * \brief Simple heap allocator.
5 * This file implements a very simple heap allocator, based on K&R malloc.
18 #include <barrelfish/heap.h>
21 * \brief Initialise a new heap
23 * \param heap Heap structure to be filled in
26 * \param morecore_func Function to call to increase heap, or NULL
28 void heap_init(struct heap *heap, void *buf, size_t buflen,
31 assert(heap != NULL);
36 heap->base.s.ptr = heap->freep = &heap->base;
37 heap->base.s.size = 0;
38 heap->morecore_func = morecore_func;
45 heap_free(heap, (void *)(h + 1));
49 * \brief Equivalent of malloc; allocates memory out of given heap.
53 void *heap_alloc(struct heap *heap, size_t nbytes)
60 prevp = heap->freep;
72 heap->freep = prevp;
76 if (p == heap->freep) { /* wrapped around free list */
78 if (heap->morecore_func == NULL
80 heap->morecore_func(heap, nunits)) == NULL) {
90 void heap_free(struct heap *heap, void *ap)
94 assert(heap != NULL);
95 assert(heap->freep != NULL);
101 for (p = heap->freep; !(bp > p && bp < p->s.ptr); p = p->s.ptr) {
121 heap->freep = p;
146 union heap_header *heap_default_morecore(struct heap *heap, unsigned nu)
157 heap_free(heap, (void *)(up + 1));