X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fcommon%2Fmi-lttng.c;h=f77b6b648c30b541817c237cf0cfdb59f2f2afb0;hb=e10b6a1c2fad4f300523cf8cfb57aba2bfa101c0;hp=ef98687d868108ef6e37e604b9c5e6c577f1cf00;hpb=7b4aa11d71edf81f1e5a81a447b4e6b788551594;p=lttng-tools.git diff --git a/src/common/mi-lttng.c b/src/common/mi-lttng.c index ef98687d8..f77b6b648 100644 --- a/src/common/mi-lttng.c +++ b/src/common/mi-lttng.c @@ -1,6 +1,7 @@ /* * Copyright (C) 2014 - Jonathan Rajotte * - Olivier Cotte + * Copyright (C) 2016 - Jérémie Galarneau * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License, version 2 only, as @@ -23,6 +24,24 @@ #include +#define MI_SCHEMA_MAJOR_VERSION 3 +#define MI_SCHEMA_MINOR_VERSION 0 + +/* Machine interface namespace URI */ +const char * const mi_lttng_xmlns = "xmlns"; +const char * const mi_lttng_ns_uri = "http://lttng.org/xml/ns/lttng-mi"; +const char * const mi_lttng_xmlns_xsi = "xmlns:xsi"; +const char * const mi_lttng_w3_schema_uri = "http://www.w3.org/2001/XMLSchema-instance"; +const char * const mi_lttng_schema_location = "xsi:schemaLocation"; +const char * const mi_lttng_schema_location_uri = + "http://lttng.org/xml/ns/lttng-mi" " " + "http://lttng.org/xml/schemas/lttng-mi/" XSTR(MI_SCHEMA_MAJOR_VERSION) + "/lttng-mi-" XSTR(MI_SCHEMA_MAJOR_VERSION) "." + XSTR(MI_SCHEMA_MINOR_VERSION) ".xsd"; +const char * const mi_lttng_schema_version = "schemaVersion"; +const char * const mi_lttng_schema_version_value = XSTR(MI_SCHEMA_MAJOR_VERSION) + "." XSTR(MI_SCHEMA_MINOR_VERSION); + /* Strings related to command */ const char * const mi_lttng_element_command = "command"; const char * const mi_lttng_element_command_action = "snapshot_action"; @@ -487,10 +506,42 @@ int mi_lttng_writer_command_open(struct mi_writer *writer, const char *command) { int ret; - ret = mi_lttng_writer_open_element(writer, mi_lttng_element_command); + /* + * A command is always the MI's root node, it must declare the current + * namespace and schema URIs and the schema's version. + */ + ret = config_writer_open_element(writer->writer, + mi_lttng_element_command); + if (ret) { + goto end; + } + + ret = config_writer_write_attribute(writer->writer, + mi_lttng_xmlns, mi_lttng_ns_uri); + if (ret) { + goto end; + } + + ret = config_writer_write_attribute(writer->writer, + mi_lttng_xmlns_xsi, mi_lttng_w3_schema_uri); + if (ret) { + goto end; + } + + ret = config_writer_write_attribute(writer->writer, + mi_lttng_schema_location, + mi_lttng_schema_location_uri); + if (ret) { + goto end; + } + + ret = config_writer_write_attribute(writer->writer, + mi_lttng_schema_version, + mi_lttng_schema_version_value); if (ret) { goto end; } + ret = mi_lttng_writer_write_element_string(writer, mi_lttng_element_command_name, command); end: @@ -951,22 +1002,16 @@ int mi_lttng_event_common_attributes(struct mi_writer *writer, goto end; } - /* Event filter enabled? */ - ret = mi_lttng_writer_write_element_bool(writer, - config_element_filter, event->filter); - /* Event filter expression */ ret = lttng_event_get_filter_string(event, &filter_expression); - if (ret) { goto end; } if (filter_expression) { ret = mi_lttng_writer_write_element_string(writer, - config_element_filter_expression, - filter_expression); - + config_element_filter_expression, + filter_expression); if (ret) { goto end; }