static regex_t *debug_filter = NULL;
/* Filter expression for messages */
static int debug_init = 0; /* Did we initialize debugging? */
-static _cups_mutex_t debug_mutex = _CUPS_MUTEX_INITIALIZER;
+static _cups_mutex_t debug_init_mutex = _CUPS_MUTEX_INITIALIZER,
/* Mutex to control initialization */
+ debug_log_mutex = _CUPS_MUTEX_INITIALIZER;
+ /* Mutex to serialize log entries */
+
+
+/*
+ * 'debug_thread_id()' - Return an integer representing the current thread.
+ */
+
+static int /* O - Local thread ID */
+debug_thread_id(void)
+{
+ _cups_globals_t *cg = _cupsGlobals(); /* Global data */
+
+
+ return (cg->thread_id);
+}
/*
{
int result; /* Filter result */
- _cupsMutexLock(&debug_mutex);
+ _cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, format, 0, NULL, 0);
- _cupsMutexUnlock(&debug_mutex);
+ _cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
*/
gettimeofday(&curtime, NULL);
- snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d ",
- (int)((curtime.tv_sec / 3600) % 24),
+ snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d ",
+ debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000));
va_start(ap, format);
- bytes = debug_vsnprintf(buffer + 13, sizeof(buffer) - 14, format, ap) + 13;
+ bytes = debug_vsnprintf(buffer + 19, sizeof(buffer) - 20, format, ap) + 19;
va_end(ap);
if (bytes >= (sizeof(buffer) - 1))
* Write it out...
*/
+ _cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
+ _cupsMutexUnlock(&debug_log_mutex);
}
{
int result; /* Filter result */
- _cupsMutexLock(&debug_mutex);
+ _cupsMutexLock(&debug_init_mutex);
result = regexec(debug_filter, s, 0, NULL, 0);
- _cupsMutexUnlock(&debug_mutex);
+ _cupsMutexUnlock(&debug_init_mutex);
if (result)
return;
*/
gettimeofday(&curtime, NULL);
- bytes = snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%03d %s",
- (int)((curtime.tv_sec / 3600) % 24),
+ bytes = snprintf(buffer, sizeof(buffer), "T%03d %02d:%02d:%02d.%03d %s",
+ debug_thread_id(), (int)((curtime.tv_sec / 3600) % 24),
(int)((curtime.tv_sec / 60) % 60),
(int)(curtime.tv_sec % 60), (int)(curtime.tv_usec / 1000),
s);
* Write it out...
*/
+ _cupsMutexLock(&debug_log_mutex);
write(_cups_debug_fd, buffer, bytes);
+ _cupsMutexUnlock(&debug_log_mutex);
}
const char *filter, /* I - Filter string or NULL */
int force) /* I - Force initialization */
{
- _cupsMutexLock(&debug_mutex);
+ _cupsMutexLock(&debug_init_mutex);
if (!debug_init || force)
{
debug_init = 1;
}
- _cupsMutexUnlock(&debug_mutex);
+ _cupsMutexUnlock(&debug_init_mutex);
}
#endif /* DEBUG */