mem: include the module name in the debugging info
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Thu, 8 Oct 2009 09:33:25 +0000 (11:33 +0200)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Thu, 8 Oct 2009 09:33:25 +0000 (11:33 +0200)
- use <module_name: file> when recording the filename information
  for debugging (DBQ_QM_MALLOC defined)
- added a new file that should define in a portable way the
  various location info (file, function, a.s.o.)

mem/mem.h
mem/shm_mem.h
mem/src_loc.h [new file with mode: 0644]

index ab052bd..aed1442 100644 (file)
--- a/mem/mem.h
+++ b/mem/mem.h
 
 
 #      ifdef DBG_QM_MALLOC
-#ifdef __SUNPRO_C
-               #define __FUNCTION__ ""  /* gcc specific */
-#endif
+
+#      include "src_loc.h" /* src location macros: _SRC_* */
 #              ifdef F_MALLOC
-#                      define pkg_malloc(s) fm_malloc(mem_block, (s),__FILE__, \
-                               __FUNCTION__, __LINE__)
-#                      define pkg_free(p)   fm_free(mem_block, (p), __FILE__,  \
-                               __FUNCTION__, __LINE__)
-#                      define pkg_realloc(p, s) fm_realloc(mem_block, (p), (s),__FILE__, \
-                               __FUNCTION__, __LINE__)
+#                      define pkg_malloc(s) fm_malloc(mem_block, (s), _SRC_LOC_, \
+                               _SRC_FUNCTION_, _SRC_LINE_)
+#                      define pkg_free(p)   fm_free(mem_block, (p), _SRC_LOC_,  \
+                               _SRC_FUNCTION_, _SRC_LINE_)
+#                      define pkg_realloc(p, s) fm_realloc(mem_block, (p), (s), \
+                                       _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_)
 #              else
-#                      define pkg_malloc(s) qm_malloc(mem_block, (s),__FILE__, \
-                               __FUNCTION__, __LINE__)
-#                      define pkg_realloc(p, s) qm_realloc(mem_block, (p), (s),__FILE__, \
-                               __FUNCTION__, __LINE__)
-#                      define pkg_free(p)   qm_free(mem_block, (p), __FILE__,  \
-                               __FUNCTION__, __LINE__)
+#                      define pkg_malloc(s) qm_malloc(mem_block, (s),_SRC_LOC_, \
+                               _SRC_FUNCTION_, _SRC_LINE_)
+#                      define pkg_realloc(p, s) qm_realloc(mem_block, (p), (s), \
+                               _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_)
+#                      define pkg_free(p)   qm_free(mem_block, (p), _SRC_LOC_,  \
+                               _SRC_FUNCTION_, _SRC_LINE_)
 #              endif
 #      else
 #              ifdef F_MALLOC
index e4009a5..2dce31a 100644 (file)
@@ -187,12 +187,10 @@ void shm_mem_destroy();
 
 #ifdef DBG_QM_MALLOC
 
-#ifdef __SUNPRO_C
-               #define __FUNCTION__ ""  /* gcc specific */
-#endif
+#include "src_loc.h"
 
 #define shm_malloc_unsafe(_size ) \
-       MY_MALLOC(shm_block, (_size), __FILE__, __FUNCTION__, __LINE__ )
+       MY_MALLOC(shm_block, (_size), _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_ )
 
 
 inline static void* _shm_malloc(unsigned int size, 
@@ -218,15 +216,15 @@ inline static void* _shm_realloc(void *ptr, unsigned int size,
 }
 
 #define shm_malloc( _size ) _shm_malloc((_size), \
-       __FILE__, __FUNCTION__, __LINE__ )
+       _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_ )
 
 #define shm_realloc( _ptr, _size ) _shm_realloc( (_ptr), (_size), \
-       __FILE__, __FUNCTION__, __LINE__ )
+       _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_ )
 
 
 
 #define shm_free_unsafe( _p  ) \
-       MY_FREE( shm_block, (_p), __FILE__, __FUNCTION__, __LINE__ )
+       MY_FREE( shm_block, (_p), _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_ )
 
 #define shm_free(_p) \
 do { \
@@ -240,7 +238,7 @@ do { \
 void* _shm_resize(void* ptr, unsigned int size, const char* f, const char* fn,
                                        int line);
 #define shm_resize(_p, _s ) _shm_resize((_p), (_s), \
-               __FILE__, __FUNCTION__, __LINE__ )
+               _SRC_LOC_, _SRC_FUNCTION_, _SRC_LINE_ )
 /*#define shm_resize(_p, _s ) shm_realloc( (_p), (_s))*/
 
 
diff --git a/mem/src_loc.h b/mem/src_loc.h
new file mode 100644 (file)
index 0000000..3877d17
--- /dev/null
@@ -0,0 +1,83 @@
+/* 
+ * $Id$
+ * 
+ * Copyright (C) 2009 iptelorg GmbH
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+/*
+ * mem/src_loc.h - defines for src location ( function name, module a.s.o.),
+ *  used for recording a *malloc()/ *free() caller.
+ *
+ * Expects MOD_NAME defined for modules (if it's not defined "core" will be
+ * assumed).
+ * Defines:
+ *  _SRC_FUNCTION_  - current function name
+ *  _SRC_FILENAME_  - current .c filename
+ *  _SRC_LINE_      - current line
+ *  _SRC_MODULE_    - module name, lib name or "<core>" (depends on MOD_NAME
+ *                    being properly set)
+ *  _SRC_LOC_       - module name + file name
+ *
+ */
+/*
+ * History:
+ * --------
+ *  2009-10-08  initial version (andrei)
+*/
+
+#ifndef __src_loc_h
+#define __src_loc_h
+
+
+/* C >= 99 has __func__, older gcc versions have __FUNCTION__ */
+#ifndef _SRC_FUNCTION_
+#      if __STDC_VERSION__ < 199901L
+#              if __GNUC__ >= 2
+#                      define _SRC_FUNCTION_ __FUNCTION__
+#              else
+#                      define _SRC_FUNCTION_ ""
+#              endif
+#      else
+#              define _SRC_FUNCTION_ __func__
+#      endif /* __STDC_VERSION_ < 199901L */
+#endif /* _FUNC_NAME_ */
+
+
+#ifndef _SRC_FILENAME_
+#      define _SRC_FILENAME_ __FILE__
+#endif /* _SRC_FILENAME_ */
+
+
+#ifndef _SRC_LINE_
+#      define _SRC_LINE_ __LINE__
+#endif /* _SRC_LINE_ */
+
+
+#ifndef _SRC_MODULE_
+#      ifdef MOD_NAME
+#              define _SRC_MODULE_ MOD_NAME
+#      else
+#              define _SRC_MODULE_ "<core>"
+#      endif /* MOD_NAME */
+#endif /* _SRC_MODULE_ */
+
+
+#ifndef _SRC_LOC_
+#      define _SRC_LOC_ _SRC_MODULE_ ": " _SRC_FILENAME_
+#endif /*_SRC_LOC_ */
+
+
+#endif /*__src_loc_h*/
+
+/* vi: set ts=4 sw=4 tw=79:ai:cindent: */