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],[])
virThreadIsSelf;
virThreadJoin;
virThreadSelf;
+virThreadSelfID;
# usb.h
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);
#include <config.h>
+#include <unistd.h>
+#if HAVE_SYS_SYSCALL_H
+# include <sys/syscall.h>
+#endif
+
/* Nothing special required for pthreads */
int virThreadInitialize(void)
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);
return self.thread == thread->thread ? true : false;
}
+int virThreadSelfID(void)
+{
+ return (int)GetCurrentThreadId();
+}
+
+
void virThreadJoin(virThreadPtr thread)
{
if (thread->joinable) {
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;