#ifndef _DEBUG_H_ #define _DEBUG_H_ #ifdef DBG_THREADS #define debug_init() debug_init_threads() #else #define debug_init() debug_init_nothreads() #endif void debug_init_threads(); void debug_init_nothreads(); void fn_begin(char *format, ...); void fn_end(); #ifdef FNCALL_DEBUG /* define macros with debugging on */ #define begin_func(_format, _args...) fn_begin(_format , ##_args) #define return_val(_value) \ do { \ fn_end(); \ return _value; \ } while (0) #define return_void() \ do { \ fn_end(); \ return; \ } while (0) #else /* define macros with debugging off */ #define begin_func(_format) #define return_val(_value) return _value #define return_void() return #endif #endif