<p dir="ltr">On Jun 5, 2016 6:46 PM, "Mathieu Desnoyers" <<a href="mailto:mathieu.desnoyers@efficios.com">mathieu.desnoyers@efficios.com</a>> wrote:<br>
><br>
> ----- On Jun 5, 2016, at 6:00 PM, Raphaël Beamonte <a href="mailto:raphael.beamonte@gmail.com">raphael.beamonte@gmail.com</a> wrote:<br>
><br>
> > Add the required functions to change the thread name of the UST<br>
> > threads and add the -ust string at its end. This will help to<br>
> > identify LTTng-UST processes when analyzing the trace of a process.<br>
> ><br>
> > Signed-off-by: Raphaël Beamonte <<a href="mailto:raphael.beamonte@gmail.com">raphael.beamonte@gmail.com</a>><br>
> > ---<br>
> > <a href="http://configure.ac">configure.ac</a>                  |  5 ++++<br>
> > liblttng-ust/Makefile.am      |  1 +<br>
> > liblttng-ust/compat.h         | 67 ++++++++++++++++++++++++++++++++++++++++++-<br>
> > liblttng-ust/lttng-ust-comm.c |  9 ++++++<br>
> > 4 files changed, 81 insertions(+), 1 deletion(-)<br>
> ><br>
> > diff --git a/<a href="http://configure.ac">configure.ac</a> b/<a href="http://configure.ac">configure.ac</a><br>
> > index 5692553..de462ff 100644<br>
> > --- a/<a href="http://configure.ac">configure.ac</a><br>
> > +++ b/<a href="http://configure.ac">configure.ac</a><br>
> > @@ -135,6 +135,11 @@ AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test<br>
> > "x$have_libdl" = "xyes"])<br>
> > AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBC_DL], [test "x$have_libc_dl" = "xyes"])<br>
> ><br>
> > AC_CHECK_LIB([pthread], [pthread_create])<br>
> > +AC_CHECK_LIB([pthread], [pthread_setname_np],<br>
> > +     AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], [1], [Define to 1 if pthread_setname_np<br>
> > is available.]),<br>
> > +     AC_CHECK_LIB([pthread], [pthread_set_name_np],<br>
> > +             AC_DEFINE([HAVE_PTHREAD_SET_NAME_NP], [1], [Define to 1 if<br>
> > pthread_set_name_np is available.]),<br>
> > +             AC_MSG_RESULT([pthread setname/set_name not found.])))<br>
> ><br>
> > # Check for dlfcn.h<br>
> > AC_CHECK_HEADER([dlfcn.h])<br>
> > diff --git a/liblttng-ust/Makefile.am b/liblttng-ust/Makefile.am<br>
> > index f1801cf..05929be 100644<br>
> > --- a/liblttng-ust/Makefile.am<br>
> > +++ b/liblttng-ust/Makefile.am<br>
> > @@ -14,6 +14,7 @@ liblttng_ust_tracepoint_la_SOURCES = \<br>
> >       error.h<br>
> > liblttng_ust_tracepoint_la_LIBADD = \<br>
> >       -lurcu-bp \<br>
> > +     -lpthread \<br>
> >       $(top_builddir)/snprintf/<a href="http://libustsnprintf.la">libustsnprintf.la</a><br>
> > liblttng_ust_tracepoint_la_LDFLAGS = -no-undefined -version-info<br>
> > $(LTTNG_UST_LIBRARY_VERSION)<br>
> > liblttng_ust_tracepoint_la_CFLAGS = -DUST_COMPONENT="liblttng_ust_tracepoint"<br>
> > -fno-strict-aliasing<br>
> > diff --git a/liblttng-ust/compat.h b/liblttng-ust/compat.h<br>
> > index 43b2223..fff668b 100644<br>
> > --- a/liblttng-ust/compat.h<br>
> > +++ b/liblttng-ust/compat.h<br>
> > @@ -3,6 +3,7 @@<br>
> ><br>
> > /*<br>
> >  * Copyright (C) 2011 Mathieu Desnoyers <<a href="mailto:mathieu.desnoyers@efficios.com">mathieu.desnoyers@efficios.com</a>><br>
> > + * Copyright (C) 2016 Raphaël Beamonte <<a href="mailto:raphael.beamonte@gmail.com">raphael.beamonte@gmail.com</a>><br>
> >  *<br>
> >  * This library is free software; you can redistribute it and/or<br>
> >  * modify it under the terms of the GNU Lesser General Public<br>
> > @@ -23,7 +24,6 @@<br>
> >  * lttng_ust_getprocname.<br>
> >  */<br>
> > #ifdef __linux__<br>
> > -<br>
><br>
> Why remove this newline ?</p>
<p dir="ltr">Mistake that comes from the first version of the patch (I was including pthread there). I must have replicated the spacing of the FreeBSD elif when updating the patch and didn't see that mistake!</p>
<p dir="ltr">><br>
> > #include <sys/prctl.h><br>
> ><br>
> > #define LTTNG_UST_PROCNAME_LEN 17<br>
> > @@ -34,6 +34,17 @@ void lttng_ust_getprocname(char *name)<br>
> >       (void) prctl(PR_GET_NAME, (unsigned long) name, 0, 0, 0);<br>
> > }<br>
> ><br>
> > +/*<br>
> > + * if pthread_setname_np is available.<br>
><br>
> Comments should be complete sentences, starting with a capital letter,<br>
> ending with a dot.<br>
><br>
> I'll fix those on my end.</p>
<p dir="ltr">Ok, thanks!<br>
I'll remember that for next time! </p>
<p dir="ltr">Raphaël </p>
<p dir="ltr">><br>
> Thanks,<br>
><br>
> Mathieu<br>
><br>
> > + */<br>
> > +#ifdef HAVE_PTHREAD_SETNAME_NP<br>
> > +static inline<br>
> > +int lttng_pthread_setname_np(pthread_t thread, const char *name)<br>
> > +{<br>
> > +     return pthread_setname_np(thread, name);<br>
> > +}<br>
> > +#endif<br>
> > +<br>
> > #elif defined(__FreeBSD__)<br>
> > #include <stdlib.h><br>
> > #include <string.h><br>
> > @@ -59,6 +70,60 @@ void lttng_ust_getprocname(char *name)<br>
> >               strncpy(name, bsd_name, LTTNG_UST_PROCNAME_LEN - 1);<br>
> > }<br>
> ><br>
> > +/*<br>
> > + * if pthread_set_name_np is available.<br>
> > + */<br>
> > +#ifdef HAVE_PTHREAD_SET_NAME_NP<br>
> > +static inline<br>
> > +int lttng_pthread_setname_np(pthread_t thread, const char *name)<br>
> > +{<br>
> > +     return pthread_set_name_np(thread, name);<br>
> > +}<br>
> > +#endif<br>
> > +<br>
> > +#endif<br>
> > +<br>
> > +/*<br>
> > + * If a pthread setname/set_name function is available, declare<br>
> > + * the setustprocname() function that will add '-ust' to the end<br>
> > + * of the current process name, while truncating it if needed.<br>
> > + */<br>
> > +#if defined(HAVE_PTHREAD_SETNAME_NP) || defined(HAVE_PTHREAD_SETNAME_NP)<br>
> > +#define LTTNG_UST_PROCNAME_SUFFIX "-ust"<br>
> > +<br>
> > +#include <pthread.h><br>
> > +<br>
> > +static inline<br>
> > +int lttng_ust_setustprocname(void)<br>
> > +{<br>
> > +     int ret = 0;<br>
> > +     char name[LTTNG_UST_PROCNAME_LEN];<br>
> > +     int limit = LTTNG_UST_PROCNAME_LEN - strlen(LTTNG_UST_PROCNAME_SUFFIX);<br>
> > +     int len;<br>
> > +<br>
> > +     lttng_ust_getprocname(name);<br>
> > +<br>
> > +     len = strlen(name);<br>
> > +     if (len > limit) {<br>
> > +             len = limit;<br>
> > +     }<br>
> > +<br>
> > +     ret = sprintf(name + len, LTTNG_UST_PROCNAME_SUFFIX);<br>
> > +     if (ret) {<br>
> > +             goto error;<br>
> > +     }<br>
> > +<br>
> > +     ret = lttng_pthread_setname_np(pthread_self(), name);<br>
> > +<br>
> > +error:<br>
> > +     return ret;<br>
> > +}<br>
> > +#else<br>
> > +static inline<br>
> > +int lttng_ust_setustprocname(void)<br>
> > +{<br>
> > +     return 0;<br>
> > +}<br>
> > #endif<br>
> ><br>
> > #include <errno.h><br>
> > diff --git a/liblttng-ust/lttng-ust-comm.c b/liblttng-ust/lttng-ust-comm.c<br>
> > index e00a22c..6105403 100644<br>
> > --- a/liblttng-ust/lttng-ust-comm.c<br>
> > +++ b/liblttng-ust/lttng-ust-comm.c<br>
> > @@ -1295,6 +1295,15 @@ void *ust_listener_thread(void *arg)<br>
> >       int sock, ret, prev_connect_failed = 0, has_waited = 0;<br>
> >       long timeout;<br>
> ><br>
> > +     /*<br>
> > +      * If available, add '-ust' to the end of this thread's<br>
> > +      * process name<br>
> > +      */<br>
> > +     ret = lttng_ust_setustprocname();<br>
> > +     if (ret) {<br>
> > +             ERR("Unable to set UST process name");<br>
> > +     }<br>
> > +<br>
> >       /* Restart trying to connect to the session daemon */<br>
> > restart:<br>
> >       if (prev_connect_failed) {<br>
> > --<br>
> > 2.8.1<br>
><br>
> --<br>
> Mathieu Desnoyers<br>
> EfficiOS Inc.<br>
> <a href="http://www.efficios.com">http://www.efficios.com</a><br>
</p>