From 59cec096169139f64a420a14049fb07e08dd0749 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 Conflicts: src/bin/lttng-sessiond/lttng-sessiond.h src/bin/lttng-sessiond/main.c --- 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 e21f6d012..6417b3de4 100644 --- a/src/bin/lttng-sessiond/lttng-sessiond.h +++ b/src/bin/lttng-sessiond/lttng-sessiond.h @@ -108,6 +108,9 @@ extern long page_size; */ extern unsigned int jul_tcp_port; +/* 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 0bb06a3ef..a65d62bfa 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -76,7 +76,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; @@ -244,6 +243,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 */ + /* * Whether sessiond is ready for commands/health check requests. * NR_LTTNG_SESSIOND_READY must match the number of calls to diff --git a/src/common/defaults.h b/src/common/defaults.h index 6b40ce849..716b591d8 100644 --- a/src/common/defaults.h +++ b/src/common/defaults.h @@ -136,7 +136,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