diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2010-11-18 13:03:56 +0000 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2010-11-23 14:09:35 +0000 |
commit | 9288c31bf7e21fde201db49b956d3cf609c1c558 (patch) | |
tree | c0cd264c097b474e0bde1af31941540131c86568 | |
parent | qemu: setvcpus: Save config changes to disk (diff) | |
download | libvirt-9288c31bf7e21fde201db49b956d3cf609c1c558.tar.gz libvirt-9288c31bf7e21fde201db49b956d3cf609c1c558.tar.bz2 libvirt-9288c31bf7e21fde201db49b956d3cf609c1c558.zip |
Include a thread identifier in log messages
To allow messages from different threads to be untangled,
include an integer thread identifier in log messages.
* src/util/logging.c: Include thread ID
* src/util/threads.h, src/util/threads.h, src/util/threads-pthread.c:
Add new virThreadSelfID() function
* configure.ac: Check for sys/syscall.h
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | src/libvirt_private.syms | 1 | ||||
-rw-r--r-- | src/util/logging.c | 6 | ||||
-rw-r--r-- | src/util/threads-pthread.c | 16 | ||||
-rw-r--r-- | src/util/threads-win32.c | 6 | ||||
-rw-r--r-- | src/util/threads.h | 1 |
6 files changed, 29 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac index d21d558a7..fca93fcf8 100644 --- a/configure.ac +++ b/configure.ac @@ -110,7 +110,7 @@ LIBS=$old_libs dnl Availability of various common headers (non-fatal if missing). AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/un.h \ sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \ - sys/un.h]) + sys/un.h sys/syscall.h]) AC_CHECK_LIB([intl],[gettext],[]) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 10ae74f4a..0547cdfa0 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -734,6 +734,7 @@ virThreadCreate; virThreadIsSelf; virThreadJoin; virThreadSelf; +virThreadSelfID; # usb.h diff --git a/src/util/logging.c b/src/util/logging.c index ac38d4d98..d65dec077 100644 --- a/src/util/logging.c +++ b/src/util/logging.c @@ -548,14 +548,16 @@ void virLogMessage(const char *category, int priority, const char *funcname, localtime_r(&cur_time.tv_sec, &time_info); if ((funcname != NULL)) { - ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %s : %s:%lld : %s\n", + ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %d: %s : %s:%lld : %s\n", time_info.tm_hour, time_info.tm_min, time_info.tm_sec, (int) cur_time.tv_usec / 1000, + virThreadSelfID(), virLogPriorityString(priority), funcname, linenr, str); } else { - ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %s : %s\n", + ret = virAsprintf(&msg, "%02d:%02d:%02d.%03d: %d: %s : %s\n", time_info.tm_hour, time_info.tm_min, time_info.tm_sec, (int) cur_time.tv_usec / 1000, + virThreadSelfID(), virLogPriorityString(priority), str); } VIR_FREE(str); diff --git a/src/util/threads-pthread.c b/src/util/threads-pthread.c index 34d9ce847..02070ae35 100644 --- a/src/util/threads-pthread.c +++ b/src/util/threads-pthread.c @@ -21,6 +21,11 @@ #include <config.h> +#include <unistd.h> +#if HAVE_SYS_SYSCALL_H +# include <sys/syscall.h> +#endif + /* Nothing special required for pthreads */ int virThreadInitialize(void) @@ -170,6 +175,17 @@ bool virThreadIsSelf(virThreadPtr thread) return pthread_equal(pthread_self(), thread->thread) ? true : false; } +int virThreadSelfID(void) +{ +#if defined(HAVE_SYS_SYSCALL_H) && defined(SYS_gettid) + pid_t tid; + tid = syscall(SYS_gettid); + return (int)tid; +#else + return (int)pthread_self(); +#endif +} + void virThreadJoin(virThreadPtr thread) { pthread_join(thread->thread, NULL); diff --git a/src/util/threads-win32.c b/src/util/threads-win32.c index de73fd568..33be4cf47 100644 --- a/src/util/threads-win32.c +++ b/src/util/threads-win32.c @@ -288,6 +288,12 @@ bool virThreadIsSelf(virThreadPtr thread) return self.thread == thread->thread ? true : false; } +int virThreadSelfID(void) +{ + return (int)GetCurrentThreadId(); +} + + void virThreadJoin(virThreadPtr thread) { if (thread->joinable) { diff --git a/src/util/threads.h b/src/util/threads.h index b3b827d3e..fa00a9101 100644 --- a/src/util/threads.h +++ b/src/util/threads.h @@ -51,6 +51,7 @@ int virThreadCreate(virThreadPtr thread, void virThreadSelf(virThreadPtr thread); bool virThreadIsSelf(virThreadPtr thread); void virThreadJoin(virThreadPtr thread); +int virThreadSelfID(void); int virMutexInit(virMutexPtr m) ATTRIBUTE_RETURN_CHECK; int virMutexInitRecursive(virMutexPtr m) ATTRIBUTE_RETURN_CHECK; |