[lttng-dev] [lttng-ust PATCH v4] Add -ust to the name of UST threads of the application

Raphaël Beamonte raphael.beamonte at gmail.com
Sun Jun 5 22:56:37 UTC 2016


On Jun 5, 2016 6:46 PM, "Mathieu Desnoyers" <mathieu.desnoyers at efficios.com>
wrote:
>
> ----- On Jun 5, 2016, at 6:00 PM, Raphaël Beamonte
raphael.beamonte at gmail.com wrote:
>
> > Add the required functions to change the thread name of the UST
> > threads and add the -ust string at its end. This will help to
> > identify LTTng-UST processes when analyzing the trace of a process.
> >
> > Signed-off-by: Raphaël Beamonte <raphael.beamonte at gmail.com>
> > ---
> > configure.ac                  |  5 ++++
> > liblttng-ust/Makefile.am      |  1 +
> > liblttng-ust/compat.h         | 67
++++++++++++++++++++++++++++++++++++++++++-
> > liblttng-ust/lttng-ust-comm.c |  9 ++++++
> > 4 files changed, 81 insertions(+), 1 deletion(-)
> >
> > diff --git a/configure.ac b/configure.ac
> > index 5692553..de462ff 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -135,6 +135,11 @@ AM_CONDITIONAL([LTTNG_UST_BUILD_WITH_LIBDL], [test
> > "x$have_libdl" = "xyes"])
> > 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])
> > diff --git a/liblttng-ust/Makefile.am b/liblttng-ust/Makefile.am
> > index f1801cf..05929be 100644
> > --- a/liblttng-ust/Makefile.am
> > +++ b/liblttng-ust/Makefile.am
> > @@ -14,6 +14,7 @@ liblttng_ust_tracepoint_la_SOURCES = \
> >       error.h
> > liblttng_ust_tracepoint_la_LIBADD = \
> >       -lurcu-bp \
> > +     -lpthread \
> >       $(top_builddir)/snprintf/libustsnprintf.la
> > liblttng_ust_tracepoint_la_LDFLAGS = -no-undefined -version-info
> > $(LTTNG_UST_LIBRARY_VERSION)
> > liblttng_ust_tracepoint_la_CFLAGS =
-DUST_COMPONENT="liblttng_ust_tracepoint"
> > -fno-strict-aliasing
> > diff --git a/liblttng-ust/compat.h b/liblttng-ust/compat.h
> > index 43b2223..fff668b 100644
> > --- a/liblttng-ust/compat.h
> > +++ b/liblttng-ust/compat.h
> > @@ -3,6 +3,7 @@
> >
> > /*
> >  * Copyright (C) 2011 Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> > + * Copyright (C) 2016 Raphaël Beamonte <raphael.beamonte at gmail.com>
> >  *
> >  * This library is free software; you can redistribute it and/or
> >  * modify it under the terms of the GNU Lesser General Public
> > @@ -23,7 +24,6 @@
> >  * lttng_ust_getprocname.
> >  */
> > #ifdef __linux__
> > -
>
> Why remove this newline ?

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!

>
> > #include <sys/prctl.h>
> >
> > #define LTTNG_UST_PROCNAME_LEN 17
> > @@ -34,6 +34,17 @@ void lttng_ust_getprocname(char *name)
> >       (void) prctl(PR_GET_NAME, (unsigned long) name, 0, 0, 0);
> > }
> >
> > +/*
> > + * if pthread_setname_np is available.
>
> Comments should be complete sentences, starting with a capital letter,
> ending with a dot.
>
> I'll fix those on my end.

Ok, thanks!
I'll remember that for next time!

Raphaël

>
> Thanks,
>
> Mathieu
>
> > + */
> > +#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>
> > @@ -59,6 +70,60 @@ void lttng_ust_getprocname(char *name)
> >               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;
> > +     char name[LTTNG_UST_PROCNAME_LEN];
> > +     int limit = LTTNG_UST_PROCNAME_LEN -
strlen(LTTNG_UST_PROCNAME_SUFFIX);
> > +     int len;
> > +
> > +     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>
> > diff --git a/liblttng-ust/lttng-ust-comm.c
b/liblttng-ust/lttng-ust-comm.c
> > index e00a22c..6105403 100644
> > --- a/liblttng-ust/lttng-ust-comm.c
> > +++ b/liblttng-ust/lttng-ust-comm.c
> > @@ -1295,6 +1295,15 @@ void *ust_listener_thread(void *arg)
> >       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) {
> > --
> > 2.8.1
>
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.lttng.org/pipermail/lttng-dev/attachments/20160605/608b5b0e/attachment-0001.html>


More information about the lttng-dev mailing list