1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- typedef struct Pool Pool;
- struct Pool {
- char* name;
- ulong maxsize;
- ulong cursize;
- ulong curfree;
- ulong 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);
- 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 poolfree(Pool*, void*);
- extern ulong poolmsize(Pool*, void*);
- extern void* poolrealloc(Pool*, void*, ulong);
- extern void poolcheck(Pool*);
- extern int poolcompact(Pool*);
- extern void poolblockcheck(Pool*, void*);
- extern Pool* mainmem;
- extern Pool* imagmem;
- 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,
- };
|