ref: 26008742c54f33761058ded48ae7b4b8cbf9e0cd
dir: /sys/include/pool.h/
typedef struct Pool Pool; struct Pool { char* name; uintptr maxsize; uintptr cursize; uintptr curfree; uintptr curalloc; ulong minarena; /* smallest size of new arena */ ulong quantum; /* allocated blocks should be multiple of */ ulong minblock; /* smallest newly allocated block */ void* freeroot; /* actually Free* */ void* arenalist; /* actually Arena* */ void* (*alloc)(ulong); int (*merge)(void*, void*); void (*move)(void* from, void* to); void (*free)(void*, ulong); int flags; int nfree; int lastcompact; void (*lock)(Pool*); void (*unlock)(Pool*); void (*print)(Pool*, char*, ...); void (*panic)(Pool*, char*, ...); void (*logstack)(Pool*); void* private; }; extern void* poolalloc(Pool*, ulong); extern void* poolallocalign(Pool*, ulong, ulong, long, ulong); extern void poolfree(Pool*, void*); extern ulong poolmsize(Pool*, void*); extern int poolisoverlap(Pool*, void*, ulong); extern void poolreset(Pool*); extern void* poolrealloc(Pool*, void*, ulong); extern void poolcheck(Pool*); extern int poolcompact(Pool*); extern void poolblockcheck(Pool*, void*); extern void pooldump(Pool*); extern Pool* mainmem; extern Pool* imagmem; extern Pool* secrmem; enum { /* flags */ POOL_ANTAGONISM = 1<<0, POOL_PARANOIA = 1<<1, POOL_VERBOSITY = 1<<2, POOL_DEBUGGING = 1<<3, POOL_LOGGING = 1<<4, POOL_TOLERANCE = 1<<5, POOL_NOREUSE = 1<<6, };