Merged in master and stable-2.10 with some minor changes; read on. Thanks! Jérémie
On 6 July 2017 at 11:08, Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com> wrote: > Session configuration schema version is bumped to 2.10 > > Fixes #1099 > > Signed-off-by: Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com> > --- > src/bin/lttng-sessiond/save.c | 27 ++++++++++++++++++++ > src/common/config/session-config.c | 52 > +++++++++++++++++++++++++++++++++----- > src/common/config/session.xsd | 3 ++- > 3 files changed, 74 insertions(+), 8 deletions(-) > > diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c > index 1a879b21..3c34c856 100644 > --- a/src/bin/lttng-sessiond/save.c > +++ b/src/bin/lttng-sessiond/save.c > @@ -104,6 +104,18 @@ int save_kernel_channel_attributes(struct config_writer > *writer, > if (ret) { > goto end; > } > + > + if (attr->extended.ptr) { > + struct lttng_channel_extended *ext = NULL; Added an empty line here. > + ext = (struct lttng_channel_extended *) attr->extended.ptr; > + ret = config_writer_write_element_unsigned_int(writer, > + config_element_monitor_timer_interval, > + ext->monitor_timer_interval); > + if (ret) { > + goto end; > + } > + } > + > end: > return ret ? LTTNG_ERR_SAVE_IO_FAIL : 0; > } > @@ -113,6 +125,7 @@ int save_ust_channel_attributes(struct config_writer > *writer, > struct lttng_ust_channel_attr *attr) > { > int ret; > + struct ltt_ust_channel *channel = NULL; > > ret = config_writer_write_element_string(writer, > config_element_overwrite_mode, > @@ -156,6 +169,20 @@ int save_ust_channel_attributes(struct config_writer > *writer, > if (ret) { > goto end; > } > + > + /* > + * Fetch the monitor timer which is located in the parent of > + * lttng_ust_channel_attr > + */ > + ^ Removed this empty line. > + channel = caa_container_of(attr, struct ltt_ust_channel, attr); > + ret = config_writer_write_element_unsigned_int(writer, > + config_element_monitor_timer_interval, > + channel->monitor_timer_interval); > + if (ret) { > + goto end; > + } > + > end: > return ret ? LTTNG_ERR_SAVE_IO_FAIL : 0; > } > diff --git a/src/common/config/session-config.c > b/src/common/config/session-config.c > index 5d0c2365..6042f1dc 100644 > --- a/src/common/config/session-config.c > +++ b/src/common/config/session-config.c > @@ -2081,6 +2081,37 @@ int process_channel_attr_node(xmlNodePtr attr_node, > channel->attr.live_timer_interval = > live_timer_interval; > } else if (!strcmp((const char *) attr_node->name, > + config_element_monitor_timer_interval)) { > + xmlChar *content; > + uint64_t monitor_timer_interval = 0; > + > + /* monitor_timer_interval */ > + content = xmlNodeGetContent(attr_node); > + if (!content) { > + ret = -LTTNG_ERR_NOMEM; > + goto end; > + } > + > + ret = parse_uint(content, &monitor_timer_interval); > + free(content); > + if (ret) { > + ret = -LTTNG_ERR_LOAD_INVALID_CONFIG; > + goto end; > + } > + > + if (monitor_timer_interval > UINT_MAX) { > + WARN("monitor_timer_interval out of range."); > + ret = -LTTNG_ERR_LOAD_INVALID_CONFIG; > + goto end; Removed this check since monitor_timer is a uint64_t both in the liblttng-ctl and internally in the session daemon. > + } > + > + ret = lttng_channel_set_monitor_timer_interval(channel, > + monitor_timer_interval); > + if (ret) { > + ret = -LTTNG_ERR_LOAD_INVALID_CONFIG; > + goto end; > + } > + } else if (!strcmp((const char *) attr_node->name, > config_element_events)) { > /* events */ > *events_node = attr_node; > @@ -2347,6 +2378,7 @@ int process_domain_node(xmlNodePtr domain_node, const > char *session_name) > int ret; > struct lttng_domain domain = { 0 }; > struct lttng_handle *handle = NULL; > + struct lttng_channel *channel = NULL; > xmlNodePtr channels_node = NULL; > xmlNodePtr trackers_node = NULL; > xmlNodePtr pid_tracker_node = NULL; > @@ -2382,39 +2414,44 @@ int process_domain_node(xmlNodePtr domain_node, const > char *session_name) > /* create all channels */ > for (node = xmlFirstElementChild(channels_node); node; > node = xmlNextElementSibling(node)) { > - struct lttng_channel channel; > xmlNodePtr contexts_node = NULL; > xmlNodePtr events_node = NULL; > xmlNodePtr channel_attr_node; > > - memset(&channel, 0, sizeof(channel)); > - lttng_channel_set_default_attr(&domain, &channel.attr); > + channel = lttng_channel_create(&domain); > + if (!channel) { > + ret = 1; Changed to "ret = -1". It has no effect since the caller check "if (ret)", but we typically use negative error code. > + goto end; > + } > > for (channel_attr_node = xmlFirstElementChild(node); > channel_attr_node; channel_attr_node = > xmlNextElementSibling(channel_attr_node)) { > ret = process_channel_attr_node(channel_attr_node, > - &channel, &contexts_node, &events_node); > + channel, &contexts_node, &events_node); > if (ret) { > goto end; > } > } > > - ret = lttng_enable_channel(handle, &channel); > + ret = lttng_enable_channel(handle, channel); > if (ret < 0) { > goto end; > } > > - ret = process_events_node(events_node, handle, channel.name); > + ret = process_events_node(events_node, handle, channel->name); > if (ret) { > goto end; > } > > ret = process_contexts_node(contexts_node, handle, > - channel.name); > + channel->name); > if (ret) { > goto end; > } > + > + lttng_channel_destroy(channel); Moved the NULL assignment out of the loop. > + channel = NULL; > } > > /* get the trackers node */ > @@ -2447,6 +2484,7 @@ int process_domain_node(xmlNodePtr domain_node, const > char *session_name) > } > > end: > + lttng_channel_destroy(channel); > lttng_destroy_handle(handle); > return ret; > } > diff --git a/src/common/config/session.xsd b/src/common/config/session.xsd > index 6efdc433..83f04bc5 100644 > --- a/src/common/config/session.xsd > +++ b/src/common/config/session.xsd > @@ -21,7 +21,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > OTHER DEALINGS IN > THE SOFTWARE. > --> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > -elementFormDefault="qualified" version="2.8"> > +elementFormDefault="qualified" version="2.10"> > > <xs:simpleType name="name_type"> > <xs:restriction base="xs:string"> > @@ -205,6 +205,7 @@ by its signed 32-bit representation when converted to > msec. > <xs:element name="live_timer_interval" type="uint32_type" > default="0" minOccurs="0"/> <!-- usec --> > <xs:element name="events" type="event_list_type" > minOccurs="0"/> > <xs:element name="contexts" type="event_context_list_type" > minOccurs="0"/> > + <xs:element name="monitor_timer_interval" type="uint64_type" > default="0" minOccurs="0"/> <!-- usec --> > </xs:all> > </xs:complexType> > > -- > 2.11.0 > -- Jérémie Galarneau EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list lttng-dev@lists.lttng.org https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev