1199767f8SToomas Soome /* 2f5700834SToomas Soome * This module derived from code donated to the FreeBSD Project by 3199767f8SToomas Soome * Matthew Dillon <dillon@backplane.com> 4199767f8SToomas Soome * 5199767f8SToomas Soome * Copyright (c) 1998 The FreeBSD Project 6199767f8SToomas Soome * All rights reserved. 7199767f8SToomas Soome * 8199767f8SToomas Soome * Redistribution and use in source and binary forms, with or without 9199767f8SToomas Soome * modification, are permitted provided that the following conditions 10199767f8SToomas Soome * are met: 11199767f8SToomas Soome * 1. Redistributions of source code must retain the above copyright 12199767f8SToomas Soome * notice, this list of conditions and the following disclaimer. 13199767f8SToomas Soome * 2. Redistributions in binary form must reproduce the above copyright 14199767f8SToomas Soome * notice, this list of conditions and the following disclaimer in the 15199767f8SToomas Soome * documentation and/or other materials provided with the distribution. 16199767f8SToomas Soome * 17199767f8SToomas Soome * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18199767f8SToomas Soome * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19199767f8SToomas Soome * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20199767f8SToomas Soome * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21199767f8SToomas Soome * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22199767f8SToomas Soome * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23199767f8SToomas Soome * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24199767f8SToomas Soome * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25199767f8SToomas Soome * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26199767f8SToomas Soome * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27199767f8SToomas Soome * SUCH DAMAGE. 28199767f8SToomas Soome */ 29199767f8SToomas Soome 30199767f8SToomas Soome /* 31199767f8SToomas Soome * DEFS.H 32199767f8SToomas Soome */ 33199767f8SToomas Soome 34f5700834SToomas Soome #ifndef _ZALLOC_DEFS_H 35f5700834SToomas Soome #define _ZALLOC_DEFS_H 36f5700834SToomas Soome 37f5700834SToomas Soome #define USEGUARD /* use stard/end guard bytes */ 38f5700834SToomas Soome #define USEENDGUARD 39f5700834SToomas Soome #define DMALLOCDEBUG /* add debugging code to gather stats */ 40f5700834SToomas Soome #define ZALLOCDEBUG 41199767f8SToomas Soome 42199767f8SToomas Soome #include <sys/stdint.h> 43199767f8SToomas Soome #include "stand.h" 44199767f8SToomas Soome #include "zalloc_mem.h" 45199767f8SToomas Soome 46f5700834SToomas Soome #define Library extern 47199767f8SToomas Soome 48199767f8SToomas Soome /* 49199767f8SToomas Soome * block extension for sbrk() 50199767f8SToomas Soome */ 51199767f8SToomas Soome 52f5700834SToomas Soome #define BLKEXTEND (4 * 1024) 53f5700834SToomas Soome #define BLKEXTENDMASK (BLKEXTEND - 1) 54199767f8SToomas Soome 55199767f8SToomas Soome /* 56199767f8SToomas Soome * Required malloc alignment. 57199767f8SToomas Soome * 58199767f8SToomas Soome * Embedded platforms using the u-boot API drivers require that all I/O buffers 59199767f8SToomas Soome * be on a cache line sized boundary. The worst case size for that is 64 bytes. 60199767f8SToomas Soome * For other platforms, 16 bytes works fine. The alignment also must be at 61199767f8SToomas Soome * least sizeof(struct MemNode); this is asserted in zalloc.c. 62199767f8SToomas Soome */ 63199767f8SToomas Soome 64199767f8SToomas Soome #if defined(__arm__) || defined(__mips__) || defined(__powerpc__) 65199767f8SToomas Soome #define MALLOCALIGN 64 66199767f8SToomas Soome #else 67199767f8SToomas Soome #define MALLOCALIGN 16 68199767f8SToomas Soome #endif 69199767f8SToomas Soome #define MALLOCALIGN_MASK (MALLOCALIGN - 1) 70199767f8SToomas Soome 71199767f8SToomas Soome typedef struct Guard { 72f5700834SToomas Soome size_t ga_Bytes; 73f5700834SToomas Soome size_t ga_Magic; /* must be at least 32 bits */ 74199767f8SToomas Soome } Guard; 75199767f8SToomas Soome 76f5700834SToomas Soome #define GAMAGIC 0x55FF44FD 77f5700834SToomas Soome #define GAFREE 0x5F54F4DF 78199767f8SToomas Soome 79199767f8SToomas Soome #include "zalloc_protos.h" 80f5700834SToomas Soome 81f5700834SToomas Soome #endif /* _ZALLOC_DEFS_H */ 82