22 #ifndef GLOBUS_DEBUG_H
23 #define GLOBUS_DEBUG_H
37 unsigned timestamp_levels;
41 } globus_debug_handle_t;
45 const char * env_name,
46 const char * level_names,
47 globus_debug_handle_t * handle);
49 #define GlobusDebugThreadId() globus_thread_self()
52 #define GlobusDebugDefine(module_name) \
53 extern globus_debug_handle_t globus_i_##module_name##_debug_handle; \
54 void globus_i_##module_name##_debug_printf(const char * fmt, ...) \
58 if(!globus_i_##module_name##_debug_handle.file) \
62 if(globus_i_##module_name##_debug_handle.thread_ids) \
66 buf, "%lu::%s", (unsigned long) globus_thread_self().dummy, fmt);\
67 vfprintf(globus_i_##module_name##_debug_handle.file, buf, ap); \
71 vfprintf(globus_i_##module_name##_debug_handle.file, fmt, ap); \
75 void globus_i_##module_name##_debug_time_printf(const char * fmt, ...) \
79 globus_abstime_t current_time; \
81 if(!globus_i_##module_name##_debug_handle.file) \
84 GlobusTimeAbstimeGetCurrent(current_time); \
86 if(globus_i_##module_name##_debug_handle.thread_ids) \
88 globus_thread_t __self = GlobusDebugThreadId(); \
89 sprintf(buf, "%lu:%lu.%.9lu::%s", \
90 (unsigned long) __self.dummy, \
91 (unsigned long) current_time.tv_sec, \
92 (unsigned long) current_time.tv_nsec, \
94 vfprintf(globus_i_##module_name##_debug_handle.file, buf, ap); \
98 sprintf(buf, "%lu.%.9lu::%s", \
99 (unsigned long) current_time.tv_sec, \
100 (unsigned long) current_time.tv_nsec, \
102 vfprintf(globus_i_##module_name##_debug_handle.file, buf, ap); \
106 void globus_i_##module_name##_debug_fwrite( \
107 const void *ptr, size_t size, size_t nmemb) \
109 if(globus_i_##module_name##_debug_handle.file) \
110 fwrite(ptr, size, nmemb, \
111 globus_i_##module_name##_debug_handle.file); \
113 globus_debug_handle_t globus_i_##module_name##_debug_handle
116 #define GlobusDebugDeclare(module_name) \
117 extern void globus_i_##module_name##_debug_printf(const char *, ...); \
118 extern void globus_i_##module_name##_debug_time_printf(const char *, ...);\
119 extern void globus_i_##module_name##_debug_fwrite( \
120 const void *ptr, size_t size, size_t nmemb); \
121 extern globus_debug_handle_t globus_i_##module_name##_debug_handle
143 #define GlobusDebugInit(module_name, levels) \
145 #module_name "_DEBUG", \
147 &globus_i_##module_name##_debug_handle)
150 #define GlobusDebugDestroy(module_name) \
153 if(globus_i_##module_name##_debug_handle.using_file) \
155 fclose(globus_i_##module_name##_debug_handle.file); \
157 globus_i_##module_name##_debug_handle.file = GLOBUS_NULL; \
163 #define GlobusDebugMyPrintf(module_name, message) \
164 globus_i_##module_name##_debug_printf message
165 #define GlobusDebugMyTimePrintf(module_name, message) \
166 globus_i_##module_name##_debug_time_printf message
168 #define GlobusDebugMyFwrite(module_name, buffer, size, count) \
169 globus_i_##module_name##_debug_fwrite((buffer), (size), (count))
171 #define GlobusDebugMyFile(module_name) \
172 (globus_i_##module_name##_debug_handle.file)
183 #define GlobusDebugTrue(module_name, level) \
184 (globus_i_##module_name##_debug_handle.levels & (level))
186 #define GlobusDebugTimeTrue(module_name, level) \
187 (globus_i_##module_name##_debug_handle.timestamp_levels & (level))
194 #define GlobusDebugPrintf(module_name, level, message) \
197 if(GlobusDebugTrue(module_name, level)) \
199 if(!GlobusDebugTimeTrue(module_name, level)) \
201 GlobusDebugMyPrintf(module_name, message); \
205 GlobusDebugMyTimePrintf(module_name, message); \
210 #define GlobusDebugFwrite(module_name, level, buffer, size, count) \
213 if(GlobusDebugTrue(module_name, level)) \
215 GlobusDebugMyFwrite(module_name, buffer, size, count); \
221 #define GlobusDebugThreadId() 0
222 #define GlobusDebugDeclare(module_name)
223 #define GlobusDebugDefine(module_name)
224 #define GlobusDebugInit(module_name, levels) do {} while(0)
225 #define GlobusDebugDestroy(module_name) do {} while(0)
226 #define GlobusDebugPrintf(module_name, level, message) do {} while(0)
227 #define GlobusDebugFwrite(module_name, level, buffer, size, count) \
229 #define GlobusDebugMyPrintf(module_name, message) do {} while(0)
230 #define GlobusDebugMyTimePrintf(module_name, message) do {} while(0)
231 #define GlobusDebugMyFwrite(module_name, buffer, size, count) do {} while(0)
232 #define GlobusDebugMyFile(module_name) (stderr)
233 #define GlobusDebugTrue(module_name, level) 0
234 #define GlobusDebugTimeTrue(module_name, level) 0
int globus_bool_t
Boolean type.
Definition: globus_types.h:93