diff options
Diffstat (limited to 'include/base/memory.h')
-rw-r--r-- | include/base/memory.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/include/base/memory.h b/include/base/memory.h index 767e948..6bf3cbc 100644 --- a/include/base/memory.h +++ b/include/base/memory.h @@ -8,6 +8,7 @@ int mem·move(void *dst, uintptr size, void *src); int mem·copy(void *dst, uintptr size, void *src); int mem·compare(void *, uintptr size, void *); void *mem·findc(void *dst, uintptr len, int c); +void *mem·rfindc(void *dst, uintptr len, int c); int mem·set(void *dst, uintptr size, int val); int mem·set64(void *dst, uintptr size, uint64 val); @@ -49,23 +50,25 @@ typedef struct mem·Pool mem·Pool; typedef struct mem·Arena mem·Arena; typedef struct mem·Allocator { - void *(*alloc)(void *heap, uint n, ulong size); - void *(*realloc)(void *iface, void *ptr, uint n, ulong size); + void *(*alloc)(void *heap, long n, uintptr size); + void *(*realloc)(void *heap, void *ptr, long n, uintptr size); void (*free)(void *heap, void *ptr); } mem·Allocator; -extern mem·Allocator base·Memory; /* standard allocator */ +/* standard allocator */ +extern mem·Allocator base·Memory; /* pool allocator (manages free list) */ -mem·Pool *mem·makepool(mem·Allocator from, void*); -void mem·freepool(mem·Pool); +mem·Pool *mem·makepool(mem·Allocator from, void*, char *name, int flags, intptr maxsize, intptr mincore); +void mem·freepool(mem·Pool *); -void *mem·poolalloc(mem·Pool *, uintptr n, uintptr size); -void *mem·poolrealloc(mem·Pool *, void *, uintptr n, uintptr size); +void *mem·poolalloc(mem·Pool *, long n, uintptr size); +void *mem·poolrealloc(mem·Pool *, void *, long n, uintptr size); void mem·poolfree(mem·Pool *, void *); /* simple arena allocator (heterogeneous bump) */ mem·Arena *mem·makearena(mem·Allocator from, void*); -void *mem·arenaalloc(mem·Arena *A, uint n, ulong size); +void *mem·arenaalloc(mem·Arena *A, long n, ulong size); void mem·freearena(mem·Arena *A); + extern mem·Allocator mem·ArenaAllocator; |