00001 /* 00002 * $Id: zalloc.h 12500 2006-11-26 10:53:21Z cbiere $ 00003 * 00004 * Copyright (c) 2002-2003, Raphael Manfredi 00005 * 00006 *---------------------------------------------------------------------- 00007 * This file is part of gtk-gnutella. 00008 * 00009 * gtk-gnutella is free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * gtk-gnutella is distributed in the hope that it will be useful, 00015 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 * GNU General Public License for more details. 00018 * 00019 * You should have received a copy of the GNU General Public License 00020 * along with gtk-gnutella; if not, write to the Free Software 00021 * Foundation, Inc.: 00022 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00023 *---------------------------------------------------------------------- 00024 */ 00025 00036 #ifndef _zalloc_h_ 00037 #define _zalloc_h_ 00038 00039 #include "common.h" 00040 00041 #define ZALLOC_ALIGNBYTES MEM_ALIGNBYTES 00042 00043 /* 00044 * Object size rounding. 00045 */ 00046 #define ZALLOC_MASK (ZALLOC_ALIGNBYTES - 1) 00047 #define zalloc_round(s) \ 00048 ((gulong) (((gulong) (s) + ZALLOC_MASK) & ~ZALLOC_MASK)) 00049 00050 struct zone; 00051 typedef struct zone zone_t; 00052 00053 /* 00054 * Memory allocation routines. 00055 */ 00056 00057 zone_t *zcreate(gint, gint); 00058 zone_t *zget(gint, gint); 00059 void zdestroy(zone_t *zone); 00060 00061 /* 00062 * Under REMAP_ZALLOC control, those routines are remapped to malloc/free. 00063 * Under TRACK_ZALLOC, we keep track of the allocation places. 00064 */ 00065 00066 #if defined(USE_DMALLOC) && !defined(REMAP_ZALLOC) 00067 #define REMAP_ZALLOC 00068 #endif 00069 00070 #if defined(REMAP_ZALLOC) && defined(TRACK_ZALLOC) 00071 #error "TRACK_ZALLOC and REMAP_ZALLOC are mutually exclusive" 00072 #endif /* REMAP_ZALLOC && TRACK_ZALLOC */ 00073 00074 gpointer zalloc(zone_t *); 00075 void zfree(zone_t *, gpointer); 00076 00077 #ifdef TRACK_ZALLOC 00078 00079 #define zalloc(z) zalloc_track(z, __FILE__, __LINE__) 00080 00081 gpointer zalloc_track(zone_t *z, gchar *file, gint line); 00082 00083 #endif /* TRACK_ZALLOC */ 00084 00085 #endif /* _zalloc_h_ */ 00086
1.3.9.1