Main Page | Modules | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

zalloc.h

Go to the documentation of this file.
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 

Generated on Sat Jun 30 17:53:25 2007 for gtk-gnutella by  doxygen 1.3.9.1