util: Add function logger helpers
This commit is contained in:
parent
a82408c353
commit
b7d2919e8e
|
@ -359,6 +359,41 @@ const char *u_prim_name( unsigned prim )
|
|||
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
int fl_indent = 0;
|
||||
const char* fl_function[1024];
|
||||
|
||||
int debug_funclog_enter(const char* f, const int line, const char* file)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < fl_indent; i++)
|
||||
debug_printf(" ");
|
||||
debug_printf("%s\n", f);
|
||||
|
||||
assert(fl_indent < 1023);
|
||||
fl_function[fl_indent++] = f;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void debug_funclog_exit(const char* f, const int line, const char* file)
|
||||
{
|
||||
--fl_indent;
|
||||
assert(fl_indent >= 0);
|
||||
assert(fl_function[fl_indent] == f);
|
||||
}
|
||||
|
||||
void debug_funclog_enter_exit(const char* f, const int line, const char* file)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < fl_indent; i++)
|
||||
debug_printf(" ");
|
||||
debug_printf("%s\n", f);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
/**
|
||||
|
|
|
@ -279,6 +279,43 @@ debug_dump_flags(const struct debug_named_value *names,
|
|||
unsigned long value);
|
||||
|
||||
|
||||
/**
|
||||
* Function enter exit loggers
|
||||
*/
|
||||
#ifdef DEBUG
|
||||
int debug_funclog_enter(const char* f, const int line, const char* file);
|
||||
void debug_funclog_exit(const char* f, const int line, const char* file);
|
||||
void debug_funclog_enter_exit(const char* f, const int line, const char* file);
|
||||
|
||||
#define DEBUG_FUNCLOG_ENTER() \
|
||||
int __debug_decleration_work_around = \
|
||||
debug_funclog_enter(__FUNCTION__, __LINE__, __FILE__)
|
||||
#define DEBUG_FUNCLOG_EXIT() \
|
||||
do { \
|
||||
(void)__debug_decleration_work_around; \
|
||||
debug_funclog_exit(__FUNCTION__, __LINE__, __FILE__); \
|
||||
return; \
|
||||
} while(0)
|
||||
#define DEBUG_FUNCLOG_EXIT_RET(ret) \
|
||||
do { \
|
||||
(void)__debug_decleration_work_around; \
|
||||
debug_funclog_exit(__FUNCTION__, __LINE__, __FILE__); \
|
||||
return ret; \
|
||||
} while(0)
|
||||
#define DEBUG_FUNCLOG_ENTER_EXIT() \
|
||||
debug_funclog_enter_exit(__FUNCTION__, __LINE__, __FILE__)
|
||||
|
||||
#else
|
||||
#define DEBUG_FUNCLOG_ENTER() \
|
||||
int __debug_decleration_work_around
|
||||
#define DEBUG_FUNCLOG_EXIT() \
|
||||
do { (void)__debug_decleration_work_around; return; } while(0)
|
||||
#define DEBUG_FUNCLOG_EXIT_RET(ret) \
|
||||
do { (void)__debug_decleration_work_around; return ret; } while(0)
|
||||
#define DEBUG_FUNCLOG_ENTER_EXIT()
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* Get option.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue