Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct Pool Pool;
2
struct Pool {
3
	char*	name;
4
	ulong	maxsize;
5
 
6
	ulong	cursize;
7
	ulong	curfree;
8
	ulong	curalloc;
9
 
10
	ulong	minarena;	/* smallest size of new arena */
11
	ulong	quantum;	/* allocated blocks should be multiple of */
12
	ulong	minblock;	/* smallest newly allocated block */
13
 
14
	void*	freeroot;	/* actually Free* */
15
	void*	arenalist;	/* actually Arena* */
16
 
17
	void*	(*alloc)(ulong);
18
	int	(*merge)(void*, void*);
19
	void	(*move)(void* from, void* to);
20
 
21
	int	flags;
22
	int	nfree;
23
	int	lastcompact;
24
 
25
	void	(*lock)(Pool*);
26
	void	(*unlock)(Pool*);
27
	void	(*print)(Pool*, char*, ...);
28
	void	(*panic)(Pool*, char*, ...);
29
	void	(*logstack)(Pool*);
30
 
31
	void*	private;
32
};
33
 
34
extern void*	poolalloc(Pool*, ulong);
35
extern void*	poolallocalign(Pool*, ulong, ulong, long, ulong);
36
extern void	poolfree(Pool*, void*);
37
extern ulong	poolmsize(Pool*, void*);
38
extern void*	poolrealloc(Pool*, void*, ulong);
39
extern void	poolcheck(Pool*);
40
extern int	poolcompact(Pool*);
41
extern void	poolblockcheck(Pool*, void*);
42
 
43
extern Pool*	mainmem;
44
extern Pool*	imagmem;
45
 
46
enum {	/* flags */
47
	POOL_ANTAGONISM	= 1<<0,
48
	POOL_PARANOIA	= 1<<1,
49
	POOL_VERBOSITY	= 1<<2,
50
	POOL_DEBUGGING	= 1<<3,
51
	POOL_LOGGING	= 1<<4,
52
	POOL_TOLERANCE	= 1<<5,
53
	POOL_NOREUSE	= 1<<6,
54
};