summaryrefslogtreecommitdiffstats
path: root/debug.h
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2008-04-16 10:26:54 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2008-04-16 10:26:54 +0200
commit8f8f65abb66d1a7839c30c2d1b4b4d653a8990cc (patch)
tree8bd92ca19ae3cccd5b160c717960db88bb095e73 /debug.h
parent3af28bbd2dc4c79b242aad3b9e3f45cffe0f19d0 (diff)
downloadrsyslog-8f8f65abb66d1a7839c30c2d1b4b4d653a8990cc.tar.gz
rsyslog-8f8f65abb66d1a7839c30c2d1b4b4d653a8990cc.tar.xz
rsyslog-8f8f65abb66d1a7839c30c2d1b4b4d653a8990cc.zip
moved files to the runtime
there are still some files left which could go into the runtime, but I think we will delete most of them once we are done with the full modularization.
Diffstat (limited to 'debug.h')
-rw-r--r--debug.h145
1 files changed, 0 insertions, 145 deletions
diff --git a/debug.h b/debug.h
deleted file mode 100644
index 4dcc593a..00000000
--- a/debug.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/* debug.h
- *
- * Definitions for the debug and run-time analysis support module.
- * Contains a lot of macros.
- *
- * Copyright 2008 Rainer Gerhards and Adiscon GmbH.
- *
- * This file is part of rsyslog.
- *
- * Rsyslog is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Rsyslog is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Rsyslog. If not, see <http://www.gnu.org/licenses/>.
- *
- * A copy of the GPL can be found in the file "COPYING" in this distribution.
- */
-#ifndef DEBUG_H_INCLUDED
-#define DEBUG_H_INCLUDED
-
-#include <pthread.h>
-#include "obj-types.h"
-
-/* external static data elements (some time to be replaced) */
-extern int Debug; /* debug flag - read-only after startup */
-extern int debugging_on; /* read-only, except on sig USR1 */
-
-/* data types */
-
-/* the function database. It is used as a static var inside each function. That provides
- * us the fast access to it that we need to make the instrumentation work. It's address
- * also serves as a unique function identifier and can be used inside other structures
- * to refer to the function (e.g. for pretty-printing names).
- * rgerhards, 2008-01-24
- */
-typedef struct dbgFuncDBmutInfoEntry_s {
- pthread_mutex_t *pmut;
- int lockLn; /* line where it was locked (inside our func): -1 means mutex is not locked */
- pthread_t thrd; /* thrd where the mutex was locked */
- unsigned long lInvocation; /* invocation (unique during program run!) of this function that locked the mutex */
-} dbgFuncDBmutInfoEntry_t;
-typedef struct dbgFuncDB_s {
- unsigned magic;
- unsigned long nTimesCalled;
- char *func;
- char *file;
- int line;
- dbgFuncDBmutInfoEntry_t mutInfo[5];
- /* remember to update the initializer if you add anything or change the order! */
-} dbgFuncDB_t;
-#define dbgFUNCDB_MAGIC 0xA1B2C3D4
-#define dbgFuncDB_t_INITIALIZER \
- { \
- .magic = dbgFUNCDB_MAGIC,\
- .nTimesCalled = 0,\
- .func = __func__, \
- .file = __FILE__, \
- .line = __LINE__ \
- }
-
-/* the structure below was originally just the thread's call stack, but it has
- * a bit evolved over time. So we have now ended up with the fact that it
- * all debug info we know about the thread.
- */
-typedef struct dbgCallStack_s {
- pthread_t thrd;
- dbgFuncDB_t *callStack[500];
- int lastLine[500]; /* last line where code execution was seen */
- int stackPtr;
- int stackPtrMax;
- char *pszThrdName;
- struct dbgCallStack_s *pNext;
- struct dbgCallStack_s *pPrev;
-} dbgThrdInfo_t;
-
-
-/* prototypes */
-rsRetVal dbgClassInit(void);
-rsRetVal dbgClassExit(void);
-void sigsegvHdlr(int signum);
-void dbgoprint(obj_t *pObj, char *fmt, ...) __attribute__((format(printf, 2, 3)));
-void dbgprintf(char *fmt, ...) __attribute__((format(printf, 1, 2)));
-int dbgMutexLock(pthread_mutex_t *pmut, dbgFuncDB_t *pFuncD, int ln, int iStackPtr);
-int dbgMutexUnlock(pthread_mutex_t *pmut, dbgFuncDB_t *pFuncD, int ln, int iStackPtr);
-int dbgCondWait(pthread_cond_t *cond, pthread_mutex_t *pmut, dbgFuncDB_t *pFuncD, int ln, int iStackPtr);
-int dbgCondTimedWait(pthread_cond_t *cond, pthread_mutex_t *pmut, const struct timespec *abstime, dbgFuncDB_t *pFuncD, int ln, int iStackPtr);
-void dbgFree(void *pMem, dbgFuncDB_t *pFuncDB, int ln, int iStackPtr);
-int dbgEntrFunc(dbgFuncDB_t **ppFuncDB, const char *file, const char *func, int line);
-void dbgExitFunc(dbgFuncDB_t *pFuncDB, int iStackPtrRestore, int iRet);
-void dbgSetExecLocation(int iStackPtr, int line);
-void dbgSetThrdName(uchar *pszName);
-void dbgPrintAllDebugInfo(void);
-
-/* macros */
-#ifdef RTINST
-# define BEGINfunc static dbgFuncDB_t *pdbgFuncDB; int dbgCALLStaCK_POP_POINT = dbgEntrFunc(&pdbgFuncDB, __FILE__, __func__, __LINE__);
-# define ENDfunc dbgExitFunc(pdbgFuncDB, dbgCALLStaCK_POP_POINT, RS_RET_NO_IRET);
-# define ENDfuncIRet dbgExitFunc(pdbgFuncDB, dbgCALLStaCK_POP_POINT, iRet);
-# define ASSERT(x) assert(x)
-#else
-# define BEGINfunc
-# define ENDfunc
-# define ENDfuncIRet
-# define ASSERT(x)
-#endif
-#ifdef RTINST
-# define RUNLOG dbgSetExecLocation(dbgCALLStaCK_POP_POINT, __LINE__); dbgprintf("%s:%d: %s: log point\n", __FILE__, __LINE__, __func__)
-# define RUNLOG_VAR(fmt, x) dbgSetExecLocation(dbgCALLStaCK_POP_POINT, __LINE__);\
- dbgprintf("%s:%d: %s: var '%s'[%s]: " fmt "\n", __FILE__, __LINE__, __func__, #x, fmt, x)
-# define RUNLOG_STR(str) dbgSetExecLocation(dbgCALLStaCK_POP_POINT, __LINE__);\
- dbgprintf("%s:%d: %s: %s\n", __FILE__, __LINE__, __func__, str)
-#else
-# define RUNLOG
-# define RUNLOG_VAR(fmt, x)
-# define RUNLOG_STR(str)
-#endif
-
-/* mutex operations */
-#define MUTOP_LOCKWAIT 1
-#define MUTOP_LOCK 2
-#define MUTOP_UNLOCK 3
-
-
-/* debug aides */
-#ifdef RTINST
-#define d_pthread_mutex_lock(x) dbgMutexLock(x, pdbgFuncDB, __LINE__, dbgCALLStaCK_POP_POINT )
-#define d_pthread_mutex_unlock(x) dbgMutexUnlock(x, pdbgFuncDB, __LINE__, dbgCALLStaCK_POP_POINT )
-#define d_pthread_cond_wait(cond, mut) dbgCondWait(cond, mut, pdbgFuncDB, __LINE__, dbgCALLStaCK_POP_POINT )
-#define d_pthread_cond_timedwait(cond, mut, to) dbgCondTimedWait(cond, mut, to, pdbgFuncDB, __LINE__, dbgCALLStaCK_POP_POINT )
-#define d_free(x) dbgFree(x, pdbgFuncDB, __LINE__, dbgCALLStaCK_POP_POINT )
-#else
-#define d_pthread_mutex_lock(x) pthread_mutex_lock(x)
-#define d_pthread_mutex_unlock(x) pthread_mutex_unlock(x)
-#define d_pthread_cond_wait(cond, mut) pthread_cond_wait(cond, mut)
-#define d_pthread_cond_timedwait(cond, mut, to) pthread_cond_timedwait(cond, mut, to)
-#define d_free(x) free(x)
-#endif
-#endif /* #ifndef DEBUG_H_INCLUDED */