listing and activation of loglevel by number
[lttng-tools.git] / lttng / commands / enable_channels.c
index aac5fa4979c9d274b62f72ee61bcdd67c311dd9b..5c9af1d9c8517b7c6e2998295e26516fb78b9590 100644 (file)
@@ -31,7 +31,7 @@
 #include "../utils.h"
 
 static char *opt_channels;
-static char *opt_kernel;
+static int opt_kernel;
 static char *opt_cmd_name;
 static char *opt_session_name;
 static int opt_pid_all;
@@ -58,7 +58,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},
        {"discard",        0,   POPT_ARG_NONE, 0, OPT_DISCARD, 0, 0},
@@ -104,6 +104,37 @@ static void usage(FILE *ofp)
        fprintf(ofp, "\n");
 }
 
+/*
+ * Set default attributes depending on those already defined from the command
+ * line.
+ */
+static void set_default_attr(struct lttng_domain *dom)
+{
+       struct lttng_channel_attr default_attr;
+
+       /* Set attributes */
+       lttng_channel_set_default_attr(dom, &default_attr);
+
+       if (chan.attr.overwrite == -1) {
+               chan.attr.overwrite = default_attr.overwrite;
+       }
+       if (chan.attr.subbuf_size == -1) {
+               chan.attr.subbuf_size = default_attr.subbuf_size;
+       }
+       if (chan.attr.num_subbuf == -1) {
+               chan.attr.num_subbuf = default_attr.num_subbuf;
+       }
+       if (chan.attr.switch_timer_interval == -1) {
+               chan.attr.switch_timer_interval = default_attr.switch_timer_interval;
+       }
+       if (chan.attr.read_timer_interval == -1) {
+               chan.attr.read_timer_interval = default_attr.read_timer_interval;
+       }
+       if (chan.attr.output == -1) {
+               chan.attr.output = default_attr.output;
+       }
+}
+
 /*
  * Adding channel using the lttng API.
  */
@@ -130,6 +161,8 @@ static int enable_channel(char *session_name)
                goto error;
        }
 
+       set_default_attr(&dom);
+
        handle = lttng_create_handle(session_name, &dom);
        if (handle == NULL) {
                ret = -1;
@@ -168,25 +201,11 @@ error:
  */
 static void init_channel_config(void)
 {
-       if (opt_kernel) {
-               /* kernel default */
-               chan.attr.overwrite = DEFAULT_CHANNEL_OVERWRITE;
-               chan.attr.switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
-               chan.attr.read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
-
-               chan.attr.subbuf_size = DEFAULT_KERNEL_CHANNEL_SUBBUF_SIZE;
-               chan.attr.num_subbuf = DEFAULT_KERNEL_CHANNEL_SUBBUF_NUM;
-               chan.attr.output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
-       } else {
-               /* default behavior, used by UST. */
-               chan.attr.overwrite = DEFAULT_CHANNEL_OVERWRITE;
-               chan.attr.switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
-               chan.attr.read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
-
-               chan.attr.subbuf_size = DEFAULT_UST_CHANNEL_SUBBUF_SIZE;
-               chan.attr.num_subbuf = DEFAULT_UST_CHANNEL_SUBBUF_NUM;
-               chan.attr.output = DEFAULT_CHANNEL_OUTPUT;
-       }
+       /*
+        * Put -1 everywhere so we can identify those set by the command line and
+        * those needed to be set by the default values.
+        */
+       memset(&chan.attr, -1, sizeof(chan.attr));
 }
 
 /*
@@ -235,7 +254,6 @@ int cmd_enable_channels(int argc, const char **argv)
                        break;
                case OPT_USERSPACE:
                        opt_userspace = 1;
-                       opt_cmd_name = poptGetOptArg(pc);
                        break;
                default:
                        usage(stderr);
This page took 0.024585 seconds and 4 git commands to generate.