Add new API call lttng_channel_set_default_attr
[lttng-tools.git] / lttng / commands / disable_channels.c
index 262165eb3f0162f09580b83f9913f621df10c10f..9ad5eb6c2f034140da9eec4ca0aea9cd4be63f39 100644 (file)
@@ -49,7 +49,7 @@ static struct poptOption long_options[] = {
        {"help",           'h', POPT_ARG_NONE, 0, OPT_HELP, 0, 0},
        {"session",        's', POPT_ARG_STRING, &opt_session_name, 0, 0, 0},
        {"kernel",         'k', POPT_ARG_VAL, &opt_kernel, 1, 0, 0},
-       {"userspace",      'u', POPT_ARG_STRING | POPT_ARGFLAG_OPTIONAL, 0, OPT_USERSPACE, 0, 0},
+       {"userspace",      'u', POPT_ARG_STRING | POPT_ARGFLAG_OPTIONAL, &opt_cmd_name, OPT_USERSPACE, 0, 0},
        {"all",            0,   POPT_ARG_VAL, &opt_pid_all, 1, 0, 0},
        {"pid",            'p', POPT_ARG_INT, &opt_pid, 0, 0, 0},
        {0, 0, 0, 0, 0, 0, 0}
@@ -62,12 +62,12 @@ static void usage(FILE *ofp)
 {
        fprintf(ofp, "usage: lttng disable-channel NAME[,NAME2,...] [options]\n");
        fprintf(ofp, "\n");
-       fprintf(ofp, "  -h, --help            Show this help\n");
+       fprintf(ofp, "  -h, --help               Show this help\n");
        fprintf(ofp, "  -s, --session            Apply on session name\n");
-       fprintf(ofp, "  -k, --kernel          Apply for the kernel tracer\n");
-       fprintf(ofp, "  -u, --userspace       Apply for the user-space tracer\n");
-       fprintf(ofp, "      --all             If -u, apply on all traceable apps\n");
-       fprintf(ofp, "  -p, --pid PID         If -u, apply on a specific PID\n");
+       fprintf(ofp, "  -k, --kernel             Apply for the kernel tracer\n");
+       fprintf(ofp, "  -u, --userspace [CMD]    Apply for the user-space tracer\n");
+       fprintf(ofp, "      --all                If -u, apply on all traceable apps\n");
+       fprintf(ofp, "  -p, --pid PID            If -u, apply on a specific PID\n");
        fprintf(ofp, "\n");
 }
 
@@ -82,6 +82,19 @@ static int disable_channels(char *session_name)
 
        if (opt_kernel) {
                dom.type = LTTNG_DOMAIN_KERNEL;
+       } else if (opt_pid != 0) {
+               dom.type = LTTNG_DOMAIN_UST_PID;
+               dom.attr.pid = opt_pid;
+               DBG("PID %d set to lttng handle", opt_pid);
+       } else if (opt_userspace && opt_cmd_name == NULL) {
+               dom.type = LTTNG_DOMAIN_UST;
+       } else if (opt_userspace && opt_cmd_name != NULL) {
+               dom.type = LTTNG_DOMAIN_UST_EXEC_NAME;
+               strncpy(dom.attr.exec_name, opt_cmd_name, NAME_MAX);
+       } else {
+               ERR("Please specify a tracer (--kernel or --userspace)");
+               ret = CMD_NOT_IMPLEMENTED;
+               goto error;
        }
 
        handle = lttng_create_handle(session_name, &dom);
@@ -93,27 +106,14 @@ static int disable_channels(char *session_name)
        /* Strip channel list */
        channel_name = strtok(opt_channels, ",");
        while (channel_name != NULL) {
-               /* Kernel tracer action */
-               if (opt_kernel) {
-                       DBG("Disabling kernel channel %s", channel_name);
-                       ret = lttng_disable_channel(handle, channel_name);
-                       if (ret < 0) {
-                               goto error;
-                       } else {
-                               MSG("Kernel channel disabled %s", channel_name);
-                       }
-               } else if (opt_userspace) {             /* User-space tracer action */
-                       /*
-                        * TODO: Waiting on lttng UST 2.0
-                        */
-                       if (opt_pid_all) {
-                       } else if (opt_pid != 0) {
-                       }
-                       ret = CMD_NOT_IMPLEMENTED;
+               DBG("Disabling channel %s", channel_name);
+
+               ret = lttng_disable_channel(handle, channel_name);
+               if (ret < 0) {
                        goto error;
                } else {
-                       ERR("Please specify a tracer (--kernel or --userspace)");
-                       goto error;
+                       MSG("Channel %s disabled for session %s", channel_name,
+                                       session_name);
                }
 
                /* Next channel */
@@ -148,7 +148,6 @@ int cmd_disable_channels(int argc, const char **argv)
                        goto end;
                case OPT_USERSPACE:
                        opt_userspace = 1;
-                       opt_cmd_name = poptGetOptArg(pc);
                        break;
                default:
                        usage(stderr);
This page took 0.025454 seconds and 4 git commands to generate.