1/*
2 * Copyright 2009, Colin G��nther, coling@gmx.de.
3 * Copyright 2007, Hugo Santos. All Rights Reserved.
4 * Distributed under the terms of the MIT License.
5 */
6#ifndef _FBSD_COMPAT_SYS_MALLOC_H_
7#define _FBSD_COMPAT_SYS_MALLOC_H_
8
9
10#include <malloc.h>
11
12#include <vm/vm.h>
13
14#include <sys/param.h>
15#include <sys/queue.h>
16#include <sys/_mutex.h>
17
18
19/*
20 * flags to malloc.
21 */
22#define M_NOWAIT		0x0001
23#define M_WAITOK		0x0002
24#define M_ZERO			0x0100
25
26#define	M_MAGIC			877983977	/* time when first defined :-) */
27
28#define M_DEVBUF		0
29
30
31struct malloc_type {
32};
33
34
35void *_kernel_malloc(size_t size, int flags);
36void _kernel_free(void *ptr);
37
38void *_kernel_contigmalloc(const char *file, int line, size_t size, int flags,
39	vm_paddr_t low, vm_paddr_t high, unsigned long alignment,
40	unsigned long boundary);
41void _kernel_contigfree(void *addr, unsigned long size);
42
43#define kernel_malloc(size, base, flags) \
44	_kernel_malloc(size, flags)
45
46#define kernel_free(ptr, base) \
47	_kernel_free(ptr)
48
49#define kernel_contigmalloc(size, type, flags, low, high, alignment, boundary) \
50	_kernel_contigmalloc(__FILE__, __LINE__, size, flags, low, high, \
51		alignment, boundary)
52
53#define kernel_contigfree(addr, size, base) \
54	_kernel_contigfree(addr, size)
55
56#ifdef FBSD_DRIVER
57#	define malloc(size, tag, flags)	kernel_malloc(size, tag, flags)
58#	define free(pointer, tag)		kernel_free(pointer, tag)
59#	define contigmalloc(size, type, flags, low, high, alignment, boundary) \
60		_kernel_contigmalloc(__FILE__, __LINE__, size, flags, low, high, \
61			alignment, boundary)
62#	define contigfree(addr, size, base) \
63		_kernel_contigfree(addr, size)
64#endif
65
66#define	MALLOC_DEFINE(type, shortdesc, longdesc)	int type[1]
67
68#define	MALLOC_DECLARE(type) \
69		extern int type[1]
70
71#endif	/* _FBSD_COMPAT_SYS_MALLOC_H_ */
72