#pragma once typedef struct Head Head; typedef struct Tail Tail; typedef struct Free Free; typedef struct Used Used; typedef struct Core Core; struct Head { ulong magic; ulong size; }; struct Tail { ulong magic0; uchar datasize[2]; ulong magic1; ulong size; }; struct Free { Head; Free *left, *right; Free *next, *prev; }; struct Used { Head; }; struct Core { Head; Core *up, *down; ulong len, pad; }; struct mem·Pool { char *name; ulong maxsize; void *heap; mem·Allocator mem; ulong cursize; ulong curfree; ulong curused; ulong mincore; /* smallest size of new core */ ulong quantum; /* allocated hunks should be multiple of */ ulong minhunk; /* smallest newly allocated hunk */ Free *free; Core *core; int flags; int nfree; int lastcompact; void* private; };