AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])
AC_CHECK_LIB([pthread], [pthread_create])
+AC_CHECK_LIB([pthread], [pthread_setname_np],
+ AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], [1], [Define to 1 if pthread_setname_np is available.]),
+ AC_CHECK_LIB([pthread], [pthread_set_name_np],
+ AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP], [1], [Define to 1 if pthread_set_name_np is available.]),
+ AC_MSG_RESULT([pthread setname/set_name not found.])))
# Check for dlfcn.h
AC_CHECK_HEADER([dlfcn.h])
/*
* Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+ * Copyright (C) 2016 Raphaël Beamonte <raphael.beamonte@gmail.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
(void) prctl(PR_GET_NAME, (unsigned long) name, 0, 0, 0);
}
+/*
+ * If pthread_setname_np is available.
+ */
+#ifdef HAVE_PTHREAD_SETNAME_NP
+static inline
+int lttng_pthread_setname_np(pthread_t thread, const char *name)
+{
+ return pthread_setname_np(thread, name);
+}
+#endif
+
#elif defined(__FreeBSD__)
+
#include <stdlib.h>
#include <string.h>
strncpy(name, bsd_name, LTTNG_UST_PROCNAME_LEN - 1);
}
+/*
+ * If pthread_set_name_np is available.
+ */
+#ifdef HAVE_PTHREAD_SET_NAME_NP
+static inline
+int lttng_pthread_setname_np(pthread_t thread, const char *name)
+{
+ return pthread_set_name_np(thread, name);
+}
+#endif
+
+#endif
+
+/*
+ * If a pthread setname/set_name function is available, declare
+ * the setustprocname() function that will add '-ust' to the end
+ * of the current process name, while truncating it if needed.
+ */
+#if defined(HAVE_PTHREAD_SETNAME_NP) || defined(HAVE_PTHREAD_SETNAME_NP)
+#define LTTNG_UST_PROCNAME_SUFFIX "-ust"
+
+#include <pthread.h>
+
+static inline
+int lttng_ust_setustprocname(void)
+{
+ int ret = 0, len;
+ char name[LTTNG_UST_PROCNAME_LEN];
+ int limit = LTTNG_UST_PROCNAME_LEN - strlen(LTTNG_UST_PROCNAME_SUFFIX);
+
+ lttng_ust_getprocname(name);
+
+ len = strlen(name);
+ if (len > limit) {
+ len = limit;
+ }
+
+ ret = sprintf(name + len, LTTNG_UST_PROCNAME_SUFFIX);
+ if (ret) {
+ goto error;
+ }
+
+ ret = lttng_pthread_setname_np(pthread_self(), name);
+
+error:
+ return ret;
+}
+#else
+static inline
+int lttng_ust_setustprocname(void)
+{
+ return 0;
+}
#endif
#include <errno.h>
int sock, ret, prev_connect_failed = 0, has_waited = 0;
long timeout;
+ /*
+ * If available, add '-ust' to the end of this thread's
+ * process name
+ */
+ ret = lttng_ust_setustprocname();
+ if (ret) {
+ ERR("Unable to set UST process name");
+ }
+
/* Restart trying to connect to the session daemon */
restart:
if (prev_connect_failed) {