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 29 30 31void *_kernel_malloc(size_t size, int flags); 32void _kernel_free(void *ptr); 33 34void *_kernel_contigmalloc(const char *file, int line, size_t size, int flags, 35 vm_paddr_t low, vm_paddr_t high, unsigned long alignment, 36 unsigned long boundary); 37void _kernel_contigfree(void *addr, unsigned long size); 38 39#define kernel_malloc(size, base, flags) \ 40 _kernel_malloc(size, flags) 41 42#define kernel_free(ptr, base) \ 43 _kernel_free(ptr) 44 45#define kernel_contigmalloc(size, type, flags, low, high, alignment, boundary) \ 46 _kernel_contigmalloc(__FILE__, __LINE__, size, flags, low, high, \ 47 alignment, boundary) 48 49#define kernel_contigfree(addr, size, base) \ 50 _kernel_contigfree(addr, size) 51 52#ifdef FBSD_DRIVER 53# define malloc(size, tag, flags) kernel_malloc(size, tag, flags) 54# define free(pointer, tag) kernel_free(pointer, tag) 55# define contigmalloc(size, type, flags, low, high, alignment, boundary) \ 56 _kernel_contigmalloc(__FILE__, __LINE__, size, flags, low, high, \ 57 alignment, boundary) 58# define contigfree(addr, size, base) \ 59 _kernel_contigfree(addr, size) 60#endif 61 62#define MALLOC_DEFINE(type, shortdesc, longdesc) int type[1] 63 64#define MALLOC_DECLARE(type) \ 65 extern int type[1] 66 67#endif /* _FBSD_COMPAT_SYS_MALLOC_H_ */ 68