Make channel output type optional in session.xsd
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 16 Jun 2016 00:25:48 +0000 (20:25 -0400)
committerJonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Tue, 5 Jul 2016 22:53:50 +0000 (18:53 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
src/common/config/session-config.c
src/common/config/session.xsd

index a223d19964943b6071578d0f5b89d39b49ea98bd..874a491f3d443fa40867b75f8caa0b81dfb781a6 100644 (file)
@@ -1798,12 +1798,13 @@ end:
 }
 
 static
-int process_channel_attr_node(xmlNodePtr attr_node,
-               struct lttng_channel *channel, xmlNodePtr *contexts_node,
-               xmlNodePtr *events_node)
+int process_channel_attr_node(xmlNodePtr attr_node, bool snapshot_mode,
+               enum lttng_domain_type domain, struct lttng_channel *channel,
+               xmlNodePtr *contexts_node, xmlNodePtr *events_node)
 {
        int ret;
        bool name_set = false;
+       bool output_type_set = false;
 
        assert(attr_node);
        assert(channel);
@@ -1978,6 +1979,7 @@ int process_channel_attr_node(xmlNodePtr attr_node,
                }
 
                channel->attr.output = ret;
+               output_type_set = true;
        } else if (!strcmp((const char *) attr_node->name,
                        config_element_tracefile_size)) {
                xmlChar *content;
@@ -2053,6 +2055,13 @@ int process_channel_attr_node(xmlNodePtr attr_node,
                ret = -LTTNG_ERR_LOAD_INVALID_CONFIG;
                goto end;
        }
+
+       if (!output_type_set) {
+               /* Set default output type associated with the domain. */
+               channel->attr.output =
+                               (domain == LTTNG_DOMAIN_KERNEL && !snapshot_mode) ?
+                               LTTNG_EVENT_SPLICE : LTTNG_EVENT_MMAP;
+       }
        ret = 0;
 end:
        return ret;
@@ -2307,7 +2316,8 @@ end:
 
 
 static
-int process_domain_node(xmlNodePtr domain_node, const char *session_name)
+int process_domain_node(xmlNodePtr domain_node, const char *session_name,
+               bool snapshot_mode)
 {
        int ret;
        struct lttng_domain domain = { 0 };
@@ -2359,7 +2369,8 @@ int process_domain_node(xmlNodePtr domain_node, const char *session_name)
                        channel_attr_node; channel_attr_node =
                        xmlNextElementSibling(channel_attr_node)) {
                        ret = process_channel_attr_node(channel_attr_node,
-                               &channel, &contexts_node, &events_node);
+                               snapshot_mode, domain.type, &channel,
+                               &contexts_node, &events_node);
                        if (ret) {
                                goto end;
                        }
@@ -2630,7 +2641,8 @@ domain_init_error:
 
        for (node = xmlFirstElementChild(domains_node); node;
                node = xmlNextElementSibling(node)) {
-               ret = process_domain_node(node, (const char *) name);
+               ret = process_domain_node(node, (const char *) name,
+                               snapshot_mode == 1);
                if (ret) {
                        goto end;
                }
index 89f6d14419d1e09a3d5af36dd1bb84b59699144d..2fb4c56afffb6743356c8c0ee0ca04c9cd951121 100644 (file)
@@ -186,7 +186,7 @@ elementFormDefault="qualified" version="3.0">
                <xs:element name="subbuffer_count" type="uint64_type" default="4" minOccurs="0"/>
                <xs:element name="switch_timer_interval" type="uint32_type" default="0" minOccurs="0"/>  <!-- usec -->
                <xs:element name="read_timer_interval" type="uint32_type"/>  <!-- usec -->
-               <xs:element name="output_type" type="event_output_type"/>
+               <xs:element name="output_type" type="event_output_type" minOccurs="0"/>
                <xs:element name="tracefile_size" type="uint64_type" default="0" minOccurs="0"/> <!-- bytes -->
                <xs:element name="tracefile_count" type="uint64_type" default="0" minOccurs="0"/>
                <xs:element name="live_timer_interval" type="uint32_type" default="0" minOccurs="0"/> <!-- usec -->
This page took 0.029003 seconds and 5 git commands to generate.