22 unsigned timestamp_levels;
26 } globus_debug_handle_t;
30 const char * env_name,
31 const char * level_names,
32 globus_debug_handle_t * handle);
34 #define GlobusDebugThreadId() globus_thread_self()
37 #define GlobusDebugDefine(module_name) \
38 extern globus_debug_handle_t globus_i_##module_name##_debug_handle; \
39 void globus_i_##module_name##_debug_printf(const char * fmt, ...) \
43 if(!globus_i_##module_name##_debug_handle.file) \
47 if(globus_i_##module_name##_debug_handle.thread_ids) \
49 char buf[4096] = {0}; \
50 snprintf(buf, sizeof(buf), "%lu::%s", \
51 (unsigned long) globus_thread_self().dummy, fmt); \
52 vfprintf(globus_i_##module_name##_debug_handle.file, buf, ap); \
56 vfprintf(globus_i_##module_name##_debug_handle.file, fmt, ap); \
60 void globus_i_##module_name##_debug_time_printf(const char * fmt, ...) \
63 globus_abstime_t current_time; \
64 if(globus_i_##module_name##_debug_handle.file) \
66 char buf[4096] = {0};
\
67 GlobusTimeAbstimeGetCurrent(current_time); \
69 if(globus_i_##module_name##_debug_handle.thread_ids) \
71 globus_thread_t __self = GlobusDebugThreadId(); \
72 snprintf(buf, sizeof(buf), "%lu:%lu.%.9lu::%s", \
73 (unsigned long) __self.dummy, \
74 (unsigned long) current_time.tv_sec, \
75 (unsigned long) current_time.tv_nsec, \
80 snprintf(buf, sizeof(buf), "%lu.%.9lu::%s", \
81 (unsigned long) current_time.tv_sec, \
82 (unsigned long) current_time.tv_nsec, \
85 vfprintf(globus_i_##module_name##_debug_handle.file, buf, ap); \
89 void globus_i_##module_name##_debug_fwrite( \
90 const void *ptr, size_t size, size_t nmemb) \
92 if(globus_i_##module_name##_debug_handle.file) \
93 fwrite(ptr, size, nmemb, \
94 globus_i_##module_name##_debug_handle.file); \
96 globus_debug_handle_t globus_i_##module_name##_debug_handle
99 #define GlobusDebugDeclare(module_name) \
100 extern void globus_i_##module_name##_debug_printf(const char *, ...); \
101 extern void globus_i_##module_name##_debug_time_printf(const char *, ...);\
102 extern void globus_i_##module_name##_debug_fwrite( \
103 const void *ptr, size_t size, size_t nmemb); \
104 extern globus_debug_handle_t globus_i_##module_name##_debug_handle
126 #define GlobusDebugInit(module_name, levels) \
128 #module_name "_DEBUG", \
130 &globus_i_##module_name##_debug_handle)
133 #define GlobusDebugDestroy(module_name) \
136 if(globus_i_##module_name##_debug_handle.using_file) \
138 fclose(globus_i_##module_name##_debug_handle.file); \
140 globus_i_##module_name##_debug_handle.file = GLOBUS_NULL; \
146 #define GlobusDebugMyPrintf(module_name, message) \
147 globus_i_##module_name##_debug_printf message
148 #define GlobusDebugMyTimePrintf(module_name, message) \
149 globus_i_##module_name##_debug_time_printf message
151 #define GlobusDebugMyFwrite(module_name, buffer, size, count) \
152 globus_i_##module_name##_debug_fwrite((buffer), (size), (count))
154 #define GlobusDebugMyFile(module_name) \
155 (globus_i_##module_name##_debug_handle.file)
166 #define GlobusDebugTrue(module_name, level) \
167 (globus_i_##module_name##_debug_handle.levels & (level))
169 #define GlobusDebugTimeTrue(module_name, level) \
170 (globus_i_##module_name##_debug_handle.timestamp_levels & (level))
177 #define GlobusDebugPrintf(module_name, level, message) \
180 if(GlobusDebugTrue(module_name, level)) \
182 if(!GlobusDebugTimeTrue(module_name, level)) \
184 GlobusDebugMyPrintf(module_name, message); \
188 GlobusDebugMyTimePrintf(module_name, message); \
193 #define GlobusDebugFwrite(module_name, level, buffer, size, count) \
196 if(GlobusDebugTrue(module_name, level)) \
198 GlobusDebugMyFwrite(module_name, buffer, size, count); \
204 #define GlobusDebugThreadId() 0
205 #define GlobusDebugDeclare(module_name)
206 #define GlobusDebugDefine(module_name)
207 #define GlobusDebugInit(module_name, levels) do {} while(0)
208 #define GlobusDebugDestroy(module_name) do {} while(0)
209 #define GlobusDebugPrintf(module_name, level, message) do {} while(0)
210 #define GlobusDebugFwrite(module_name, level, buffer, size, count) \
212 #define GlobusDebugMyPrintf(module_name, message) do {} while(0)
213 #define GlobusDebugMyTimePrintf(module_name, message) do {} while(0)
214 #define GlobusDebugMyFwrite(module_name, buffer, size, count) do {} while(0)
215 #define GlobusDebugMyFile(module_name) (stderr)
216 #define GlobusDebugTrue(module_name, level) 0
217 #define GlobusDebugTimeTrue(module_name, level) 0
int globus_bool_t
Boolean type.
Definition: globus_types.h:78