From f43f95a9a82e01eed34593260d510bd32e2083ec Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 27 Feb 2014 10:03:14 -0500 Subject: [PATCH] Fix: JUL to enable user and root tracepoints This is needed to support the LTTng JUL agent to connect to both user and root session daemon, we have to enable different tracepoint for the two cases in order to avoid duplicating the trace payload in both the user and root trace output. Signed-off-by: David Goulet --- src/bin/lttng-sessiond/cmd.c | 16 ++++++++++++++-- src/bin/lttng-sessiond/lttng-sessiond.h | 3 +++ src/bin/lttng-sessiond/main.c | 4 +++- src/common/defaults.h | 3 ++- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 5bf00be85..532af7d99 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -1442,7 +1442,13 @@ int cmd_enable_event(struct ltt_session *session, struct lttng_domain *domain, memset(&uevent, 0, sizeof(uevent)); uevent.type = LTTNG_EVENT_TRACEPOINT; uevent.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL; - strncpy(uevent.name, DEFAULT_JUL_EVENT_NAME, sizeof(uevent.name)); + if (is_root) { + strncpy(uevent.name, DEFAULT_SYS_JUL_EVENT_NAME, + sizeof(uevent.name)); + } else { + strncpy(uevent.name, DEFAULT_USER_JUL_EVENT_NAME, + sizeof(uevent.name)); + } uevent.name[sizeof(uevent.name) - 1] = '\0'; /* @@ -1654,7 +1660,13 @@ int cmd_enable_event_all(struct ltt_session *session, /* Create the default JUL tracepoint. */ uevent.type = LTTNG_EVENT_TRACEPOINT; uevent.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL; - strncpy(uevent.name, DEFAULT_JUL_EVENT_NAME, sizeof(uevent.name)); + if (is_root) { + strncpy(uevent.name, DEFAULT_SYS_JUL_EVENT_NAME, + sizeof(uevent.name)); + } else { + strncpy(uevent.name, DEFAULT_USER_JUL_EVENT_NAME, + sizeof(uevent.name)); + } uevent.name[sizeof(uevent.name) - 1] = '\0'; /* diff --git a/src/bin/lttng-sessiond/lttng-sessiond.h b/src/bin/lttng-sessiond/lttng-sessiond.h index c7bcbd834..12126273c 100644 --- a/src/bin/lttng-sessiond/lttng-sessiond.h +++ b/src/bin/lttng-sessiond/lttng-sessiond.h @@ -113,6 +113,9 @@ extern unsigned int jul_tcp_port; */ extern const char * const config_section_name; +/* Is this daemon root or not. */ +extern int is_root; + int sessiond_set_thread_pollset(struct lttng_poll_event *events, size_t size); int sessiond_check_thread_quit_pipe(int fd, uint32_t events); diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index 659b2f67f..605e91dc3 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -79,7 +79,6 @@ static int opt_sig_parent; static int opt_verbose_consumer; static int opt_daemon, opt_background; static int opt_no_kernel; -static int is_root; /* Set to 1 if the daemon is running as root */ static pid_t ppid; /* Parent PID for --sig-parent option */ static pid_t child_ppid; /* Internal parent PID use with daemonize. */ static char *rundir; @@ -284,6 +283,9 @@ struct health_app *health_sessiond; /* JUL TCP port for registration. Used by the JUL thread. */ unsigned int jul_tcp_port = DEFAULT_JUL_TCP_PORT; +/* Am I root or not. */ +int is_root; /* Set to 1 if the daemon is running as root */ + const char * const config_section_name = "sessiond"; /* diff --git a/src/common/defaults.h b/src/common/defaults.h index 2232d5d40..31ea73438 100644 --- a/src/common/defaults.h +++ b/src/common/defaults.h @@ -143,7 +143,8 @@ /* Default JUL domain channel name. */ #define DEFAULT_JUL_CHANNEL_NAME "lttng_jul_channel" /* Default JUL tracepoint name. This is a wildcard for the JUL domain. */ -#define DEFAULT_JUL_EVENT_NAME "lttng_jul*" +#define DEFAULT_SYS_JUL_EVENT_NAME "lttng_jul:sys*" +#define DEFAULT_USER_JUL_EVENT_NAME "lttng_jul:user*" /* JUL default channel name. */ #define DEFAULT_CHANNEL_OVERWRITE 0 #define DEFAULT_CHANNEL_TRACEFILE_SIZE 0 -- 2.34.1