xref: /freebsd/stand/libsa/zalloc_mem.h (revision e57c0c2afbaef051b01022588ed54a6c4ace79da)
1ca987d46SWarner Losh /*
2ca987d46SWarner Losh  * This module derived from code donated to the FreeBSD Project by
3ca987d46SWarner Losh  * Matthew Dillon <dillon@backplane.com>
4ca987d46SWarner Losh  *
5ca987d46SWarner Losh  * Copyright (c) 1998 The FreeBSD Project
6ca987d46SWarner Losh  * All rights reserved.
7ca987d46SWarner Losh  *
8ca987d46SWarner Losh  * Redistribution and use in source and binary forms, with or without
9ca987d46SWarner Losh  * modification, are permitted provided that the following conditions
10ca987d46SWarner Losh  * are met:
11ca987d46SWarner Losh  * 1. Redistributions of source code must retain the above copyright
12ca987d46SWarner Losh  *    notice, this list of conditions and the following disclaimer.
13ca987d46SWarner Losh  * 2. Redistributions in binary form must reproduce the above copyright
14ca987d46SWarner Losh  *    notice, this list of conditions and the following disclaimer in the
15ca987d46SWarner Losh  *    documentation and/or other materials provided with the distribution.
16ca987d46SWarner Losh  *
17ca987d46SWarner Losh  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18ca987d46SWarner Losh  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19ca987d46SWarner Losh  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20ca987d46SWarner Losh  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21ca987d46SWarner Losh  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22ca987d46SWarner Losh  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23ca987d46SWarner Losh  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24ca987d46SWarner Losh  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25ca987d46SWarner Losh  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26ca987d46SWarner Losh  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27ca987d46SWarner Losh  * SUCH DAMAGE.
28ca987d46SWarner Losh  *
29ca987d46SWarner Losh  * $FreeBSD$
30ca987d46SWarner Losh  */
31ca987d46SWarner Losh 
32ca987d46SWarner Losh /*
33ca987d46SWarner Losh  * H/MEM.H
34ca987d46SWarner Losh  *
35ca987d46SWarner Losh  * Basic memory pool / memory node structures.
36ca987d46SWarner Losh  */
37*e57c0c2aSToomas Soome #ifndef _ZALLOC_MEM_H
38*e57c0c2aSToomas Soome #define	_ZALLOC_MEM_H
39ca987d46SWarner Losh 
40ca987d46SWarner Losh typedef struct MemNode {
41ca987d46SWarner Losh 	struct MemNode	*mr_Next;
42ca987d46SWarner Losh 	uintptr_t	mr_Bytes;
43ca987d46SWarner Losh } MemNode;
44ca987d46SWarner Losh 
45ca987d46SWarner Losh typedef struct MemPool {
46ca987d46SWarner Losh 	void		*mp_Base;
47ca987d46SWarner Losh 	void		*mp_End;
48ca987d46SWarner Losh 	MemNode		*mp_First;
49ca987d46SWarner Losh 	uintptr_t	mp_Size;
50ca987d46SWarner Losh 	uintptr_t	mp_Used;
51ca987d46SWarner Losh } MemPool;
52ca987d46SWarner Losh 
53ca987d46SWarner Losh #define	ZNOTE_FREE	0
54ca987d46SWarner Losh #define	ZNOTE_REUSE	1
55ca987d46SWarner Losh 
56*e57c0c2aSToomas Soome #endif	/* _ZALLOC_MEM_H */
57