Return to gcmalloc.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / ipsec-tools / src / racoon |
1.1 ! misho 1: /* $NetBSD: gcmalloc.h,v 1.4 2006/09/09 16:22:09 manu Exp $ */ ! 2: ! 3: /* $KAME: gcmalloc.h,v 1.4 2001/11/16 04:34:57 sakane Exp $ */ ! 4: ! 5: /* ! 6: * Copyright (C) 2000, 2001 WIDE Project. ! 7: * All rights reserved. ! 8: * ! 9: * Redistribution and use in source and binary forms, with or without ! 10: * modification, are permitted provided that the following conditions ! 11: * are met: ! 12: * 1. Redistributions of source code must retain the above copyright ! 13: * notice, this list of conditions and the following disclaimer. ! 14: * 2. Redistributions in binary form must reproduce the above copyright ! 15: * notice, this list of conditions and the following disclaimer in the ! 16: * documentation and/or other materials provided with the distribution. ! 17: * 3. Neither the name of the project nor the names of its contributors ! 18: * may be used to endorse or promote products derived from this software ! 19: * without specific prior written permission. ! 20: * ! 21: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND ! 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE ! 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 31: * SUCH DAMAGE. ! 32: */ ! 33: ! 34: /* ! 35: * Debugging malloc glue for Racoon. ! 36: */ ! 37: ! 38: #ifndef _GCMALLOC_H_DEFINED ! 39: #define _GCMALLOC_H_DEFINED ! 40: ! 41: /* ElectricFence needs no special handling. */ ! 42: ! 43: /* ! 44: * Boehm-GC provides GC_malloc(), GC_realloc(), GC_free() functions, ! 45: * but not the traditional entry points. So what we do is provide ! 46: * malloc(), calloc(), realloc(), and free() entry points in the main ! 47: * program and letting the linker do the rest. ! 48: */ ! 49: #ifdef GC ! 50: #define GC_DEBUG ! 51: #include <gc.h> ! 52: ! 53: #ifdef RACOON_MAIN_PROGRAM ! 54: void * ! 55: malloc(size_t size) ! 56: { ! 57: ! 58: return (GC_MALLOC(size)); ! 59: } ! 60: ! 61: void * ! 62: calloc(size_t number, size_t size) ! 63: { ! 64: ! 65: /* GC_malloc() clears the storage. */ ! 66: return (GC_MALLOC(number * size)); ! 67: } ! 68: ! 69: void * ! 70: realloc(void *ptr, size_t size) ! 71: { ! 72: ! 73: return (GC_REALLOC(ptr, size)); ! 74: } ! 75: ! 76: void ! 77: free(void *ptr) ! 78: { ! 79: ! 80: GC_FREE(ptr); ! 81: } ! 82: ! 83: char * ! 84: strdup(const char *str) ! 85: { ! 86: ! 87: return (GC_STRDUP(str)); ! 88: } ! 89: #endif /* RACOON_MAIN_PROGRAM */ ! 90: ! 91: #define racoon_malloc(sz) GC_debug_malloc(sz, GC_EXTRAS) ! 92: #define racoon_calloc(cnt, sz) GC_debug_malloc(cnt * sz, GC_EXTRAS) ! 93: #define racoon_realloc(old, sz) GC_debug_realloc(old, sz, GC_EXTRAS) ! 94: #define racoon_free(p) GC_debug_free(p) ! 95: #define racoon_strdup(str) GC_debug_strdup(str) ! 96: ! 97: #endif /* GC */ ! 98: ! 99: /* ! 100: * Dmalloc only requires that you pull in a header file and link ! 101: * against libdmalloc. ! 102: */ ! 103: #ifdef DMALLOC ! 104: #include <dmalloc.h> ! 105: #endif /* DMALLOC */ ! 106: ! 107: #ifdef DEBUG_RECORD_MALLOCATION ! 108: #include <debugrm.h> ! 109: #else ! 110: #ifndef racoon_malloc ! 111: #define racoon_malloc(sz) malloc((sz)) ! 112: #endif ! 113: #ifndef racoon_calloc ! 114: #define racoon_calloc(cnt, sz) calloc((cnt), (sz)) ! 115: #endif ! 116: #ifndef racoon_realloc ! 117: #define racoon_realloc(old, sz) realloc((old), (sz)) ! 118: #endif ! 119: #ifndef racoon_free ! 120: #define racoon_free(p) free((p)) ! 121: #endif ! 122: #ifndef racoon_strdup ! 123: #define racoon_strdup(s) strdup((s)) ! 124: #endif ! 125: #endif /* DEBUG_RECORD_MALLOCATION */ ! 126: ! 127: #endif /* _GCMALLOC_H_DEFINED */