81 lines
3.1 KiB
C
81 lines
3.1 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
/* gtm_malloc_dbg -- the debugging version
|
|
|
|
The bulk of the GTM storage manager code now sits in gtm_malloc_src.h and
|
|
is included twice: once in gtm_malloc.c and again in gtm_malloc_dbg.c.
|
|
The reason for this is that the production modules built for distribution
|
|
in the field can have both forms of storage mgmt available in the event
|
|
that it becomes necessary to chase a corruption issue. It can now be done
|
|
without resorting to a "debug" version. Several different levels of
|
|
debugging will also be made available to catch various problems.
|
|
|
|
If the DEBUG flag is not defined (indicating a pro build), the gtm_malloc
|
|
module will expand without all the asserts and special checking making for
|
|
a compact and efficient storage manager. The gtm_malloc_dbg module will
|
|
expand AS IF DEBUG had been specified supplying an alternate assert filled
|
|
version of storage mgmnt with several different levels of storage validation
|
|
available.
|
|
|
|
If the DEBUG flag is defined (debug or beta build), the gtm_malloc module
|
|
will expand with all debugging information intact and the gtm_malloc_dbg
|
|
module will expand as call backs to the gtm_malloc module since it makes
|
|
little sense to expand the identical module twice.
|
|
*/
|
|
|
|
#ifndef DEBUG
|
|
|
|
/* We have a PRO build -- generate a full debug version with debug versions of
|
|
our global names */
|
|
|
|
# define gtmSmInit gtmSmInit_dbg
|
|
# define gtm_malloc gtm_malloc_dbg
|
|
# define gtm_free gtm_free_dbg
|
|
# define findStorElem findStorElem_dbg
|
|
# define processDeferredFrees processDeferredFrees_dbg
|
|
# define release_unused_storage release_unused_storage_dbg
|
|
# define raise_gtmmemory_error raise_gtmmemory_error_dbg
|
|
# define gtm_bestfitsize gtm_bestfitsize_dbg
|
|
# define DEBUG
|
|
# define PRO_BUILD
|
|
# define GTM_MALLOC_DEBUG
|
|
# include "caller_id.h"
|
|
# include "gtm_malloc_src.h"
|
|
|
|
#else
|
|
|
|
/* We have a DEBUG build -- Nobody should call gtm_malloc_dbg directly */
|
|
# include "mdef.h"
|
|
# include "gtm_malloc.h"
|
|
/* Include some defs for these rtns to keep the compiler quiet for this routine.
|
|
Nobody should be calling these directly so we don't want them where they can
|
|
get included anywhere else.
|
|
|
|
Note the real versions of these routines are defined and only used/callable from
|
|
the gtm_malloc_src.h include so when we define them here for completeness in a dbg
|
|
build, we change the return signature to not return anything (saves us from having
|
|
to put a "return" after the GTMASSERTS). These are just "catchalls" in case the
|
|
expansion functioned incorrectly.
|
|
*/
|
|
void gtm_malloc_dbg(size_t size);
|
|
void gtm_free_dbg(void *addr);
|
|
void gtm_malloc_dbg(size_t size)
|
|
{
|
|
GTMASSERT;
|
|
}
|
|
|
|
void gtm_free_dbg(void *addr)
|
|
{
|
|
GTMASSERT;
|
|
}
|
|
#endif
|