Add -j/--jul to lttng UI and ABI
[lttng-tools.git] / src / bin / lttng / commands / disable_events.c
index c0b8bf9d012d53ed908a8bea019d7ba64955a851..e71234342deb7f66bc751e5d33d73ebe26460354 100644 (file)
@@ -32,6 +32,7 @@ static char *opt_channel_name;
 static char *opt_session_name;
 static int opt_userspace;
 static int opt_disable_all;
+static int opt_jul;
 #if 0
 /* Not implemented yet */
 static char *opt_cmd_name;
@@ -52,6 +53,7 @@ static struct poptOption long_options[] = {
        {"session",        's', POPT_ARG_STRING, &opt_session_name, 0, 0, 0},
        {"all-events",     'a', POPT_ARG_VAL, &opt_disable_all, 1, 0, 0},
        {"channel",        'c', POPT_ARG_STRING, &opt_channel_name, 0, 0, 0},
+       {"jul",            'j', POPT_ARG_VAL, &opt_jul, 1, 0, 0},
        {"kernel",         'k', POPT_ARG_VAL, &opt_kernel, 1, 0, 0},
 #if 0
        /* Not implemented yet */
@@ -69,25 +71,32 @@ static struct poptOption long_options[] = {
  */
 static void usage(FILE *ofp)
 {
-       fprintf(ofp, "usage: lttng disable-event NAME[,NAME2,...] [options]\n");
+       fprintf(ofp, "usage: lttng disable-event NAME[,NAME2,...] (-k | -u) [OPTIONS]\n");
        fprintf(ofp, "\n");
+       fprintf(ofp, "Options:\n");
        fprintf(ofp, "  -h, --help               Show this help\n");
        fprintf(ofp, "      --list-options       Simple listing of options\n");
-       fprintf(ofp, "  -s, --session            Apply to session name\n");
-       fprintf(ofp, "  -c, --channel            Apply to this channel\n");
+       fprintf(ofp, "  -s, --session NAME       Apply to session name\n");
+       fprintf(ofp, "  -c, --channel NAME       Apply to this channel\n");
        fprintf(ofp, "  -a, --all-events         Disable all tracepoints\n");
        fprintf(ofp, "  -k, --kernel             Apply for the kernel tracer\n");
-#if 0
-       fprintf(ofp, "  -u, --userspace [CMD]    Apply to the user-space tracer\n");
-       fprintf(ofp, "                           If no CMD, the domain used is UST global\n");
-       fprintf(ofp, "                           or else the domain is UST EXEC_NAME\n");
-       fprintf(ofp, "  -p, --pid PID            If -u, apply to specific PID (domain: UST PID)\n");
-#else
        fprintf(ofp, "  -u, --userspace          Apply to the user-space tracer\n");
-#endif
+       fprintf(ofp, "  -j, --jul                Apply for Java application using JUL\n");
        fprintf(ofp, "\n");
 }
 
+static
+const char *print_channel_name(const char *name)
+{
+       return name ? : DEFAULT_CHANNEL_NAME;
+}
+
+static
+const char *print_raw_channel_name(const char *name)
+{
+       return name ? : "<default>";
+}
+
 /*
  *  disable_events
  *
@@ -95,7 +104,7 @@ static void usage(FILE *ofp)
  */
 static int disable_events(char *session_name)
 {
-       int err, ret = CMD_SUCCESS, warn = 0;
+       int ret = CMD_SUCCESS, warn = 0;
        char *event_name, *channel_name = NULL;
        struct lttng_domain dom;
 
@@ -106,22 +115,15 @@ static int disable_events(char *session_name)
                dom.type = LTTNG_DOMAIN_KERNEL;
        } else if (opt_userspace) {
                dom.type = LTTNG_DOMAIN_UST;
+       } else if (opt_jul) {
+               dom.type = LTTNG_DOMAIN_JUL;
        } else {
-               ERR("Please specify a tracer (-k/--kernel or -u/--userspace)");
+               print_missing_domain();
                ret = CMD_ERROR;
                goto error;
        }
 
-       /* Get channel name */
-       if (opt_channel_name == NULL) {
-               err = asprintf(&channel_name, DEFAULT_CHANNEL_NAME);
-               if (err < 0) {
-                       ret = CMD_FATAL;
-                       goto error;
-               }
-       } else {
-               channel_name = opt_channel_name;
-       }
+       channel_name = opt_channel_name;
 
        handle = lttng_create_handle(session_name, &dom);
        if (handle == NULL) {
@@ -132,12 +134,12 @@ static int disable_events(char *session_name)
        if (opt_disable_all) {
                ret = lttng_disable_event(handle, NULL, channel_name);
                if (ret < 0) {
-                       /* Don't set ret so lttng can interpret the sessiond error. */
+                       ERR("%s", lttng_strerror(ret));
                        goto error;
                }
 
                MSG("All %s events are disabled in channel %s",
-                               opt_kernel ? "kernel" : "UST", channel_name);
+                               get_domain_str(dom.type), print_channel_name(channel_name));
                goto end;
        }
 
@@ -149,11 +151,16 @@ static int disable_events(char *session_name)
                ret = lttng_disable_event(handle, event_name, channel_name);
                if (ret < 0) {
                        ERR("Event %s: %s (channel %s, session %s)", event_name,
-                                       lttng_strerror(ret), channel_name, session_name);
+                                       lttng_strerror(ret),
+                                       ret == -LTTNG_ERR_NEED_CHANNEL_NAME
+                                               ? print_raw_channel_name(channel_name)
+                                               : print_channel_name(channel_name),
+                                       session_name);
                        warn = 1;
                } else {
                        MSG("%s event %s disabled in channel %s for session %s",
-                                       opt_kernel ? "kernel" : "UST", event_name, channel_name,
+                                       get_domain_str(dom.type), event_name,
+                                       print_channel_name(channel_name),
                                        session_name);
                }
 
@@ -168,9 +175,6 @@ error:
        if (warn) {
                ret = CMD_WARNING;
        }
-       if (opt_channel_name == NULL) {
-               free(channel_name);
-       }
        lttng_destroy_handle(handle);
 
        return ret;
This page took 0.026071 seconds and 5 git commands to generate.