implent xobj iterate, check, is_Free functions
[archipelago] / xseg / xtypes / xheap.h
1 #ifndef __XHEAP_H__
2 #define __XHEAP_H__
3
4 #include <sys/util.h>
5 #include <xtypes/xlock.h>
6
7 struct xheap_header {
8         uint64_t magic;
9         XPTR_TYPE(struct xheap) heap;
10         uint64_t size;
11 };
12
13 struct xheap {
14         uint32_t alignment_unit;
15         uint64_t size;
16         uint64_t cur;
17         struct xlock lock;
18         XPTR_TYPE(void) mem;
19 };
20
21 uint64_t xheap_get_chunk_size(void *ptr);
22 int xheap_init(struct xheap *xheap, uint64_t size, uint32_t alignment_unit, void *mem);
23 void* xheap_allocate(struct xheap *xheap, uint64_t bytes);
24 void xheap_free(void *ptr);
25
26 #endif