Add new API call lttng_channel_set_default_attr
[lttng-tools.git] / lttng / commands / enable_channels.c
index 48e83df28a53039ad90f09d34f65ce74d03c3961..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;
@@ -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));
 }
 
 /*
This page took 0.024291 seconds and 4 git commands to generate.