[lttng-dev] [PATCH lttng-tools] Save/load: add support for shared memory path

Jonathan Rajotte jonathan.rajotte-julien at efficios.com
Fri Apr 17 17:26:41 EDT 2015


Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien at efficios.com>
---
 src/bin/lttng-sessiond/save.c          | 10 ++++++++++
 src/common/config/config-session-abi.h |  1 +
 src/common/config/config.c             | 19 +++++++++++++++++++
 src/common/config/session.xsd          |  1 +
 4 files changed, 31 insertions(+)

diff --git a/src/bin/lttng-sessiond/save.c b/src/bin/lttng-sessiond/save.c
index 0c6894b..d6316ef 100644
--- a/src/bin/lttng-sessiond/save.c
+++ b/src/bin/lttng-sessiond/save.c
@@ -1663,6 +1663,16 @@ int save_session(struct ltt_session *session,
 		goto end;
 	}
 
+	if(session->shm_path[0] != '\0') {
+		ret = config_writer_write_element_string(writer,
+				config_element_shared_memory_path,
+				session->shm_path);
+		if (ret) {
+			ret = LTTNG_ERR_SAVE_IO_FAIL;
+			goto end;
+		}
+	}
+
 	ret = save_domains(writer, session);
 	if (ret) {
 		goto end;
diff --git a/src/common/config/config-session-abi.h b/src/common/config/config-session-abi.h
index 8cbff25..8ac5cb0 100644
--- a/src/common/config/config-session-abi.h
+++ b/src/common/config/config-session-abi.h
@@ -67,6 +67,7 @@ const char * const config_element_data_uri;
 const char * const config_element_max_size;
 const char * const config_element_pid;
 const char * const config_element_pids;
+const char * const config_element_shared_memory_path;
 
 const char * const config_domain_type_kernel;
 const char * const config_domain_type_ust;
diff --git a/src/common/config/config.c b/src/common/config/config.c
index d84e38b..bc4f0c0 100644
--- a/src/common/config/config.c
+++ b/src/common/config/config.c
@@ -117,6 +117,7 @@ const char * const config_element_data_uri = "data_uri";
 const char * const config_element_max_size = "max_size";
 const char * const config_element_pid = "pid";
 const char * const config_element_pids = "pids";
+const char * const config_element_shared_memory_path = "shared_memory_path";
 
 const char * const config_domain_type_kernel = "KERNEL";
 const char * const config_domain_type_ust = "UST";
@@ -2172,6 +2173,7 @@ int process_session_node(xmlNodePtr session_node, const char *session_name,
 	int ret, started = -1, snapshot_mode = -1;
 	uint64_t live_timer_interval = UINT64_MAX;
 	char *name = NULL;
+	char *shm_path = NULL;
 	xmlNodePtr domains_node = NULL;
 	xmlNodePtr output_node = NULL;
 	xmlNodePtr node;
@@ -2216,6 +2218,16 @@ int process_session_node(xmlNodePtr session_node, const char *session_name,
 			config_element_output)) {
 			/* output */
 			output_node = node;
+		} else if (!shm_path && !strcmp((const char *) node->name,
+					config_element_shared_memory_path)) {
+			/* shared memory path */
+			xmlChar *node_content = xmlNodeGetContent(node);
+			if (!node_content) {
+				ret = -LTTNG_ERR_NOMEM;
+				goto error;
+			}
+
+			shm_path = (char *) node_content;
 		} else {
 			/* attributes, snapshot_mode or live_timer_interval */
 			xmlNodePtr attributes_child =
@@ -2356,6 +2368,13 @@ domain_init_error:
 		goto error;
 	}
 
+	if (shm_path) {
+		ret = lttng_set_session_shm_path(name, shm_path);
+		if (ret) {
+			goto error;
+		}
+	}
+
 	for (node = xmlFirstElementChild(domains_node); node;
 		node = xmlNextElementSibling(node)) {
 		ret = process_domain_node(node, name);
diff --git a/src/common/config/session.xsd b/src/common/config/session.xsd
index 6d74e85..0a7458d 100644
--- a/src/common/config/session.xsd
+++ b/src/common/config/session.xsd
@@ -279,6 +279,7 @@ elementFormDefault="qualified" version="2.5">
 <xs:complexType name="session_type">
 	<xs:all>
 		<xs:element name="name" type="name_type"/>
+		<xs:element name="shared_memory_path" type="xs:string" minOccurs="0"/>
 		<xs:element name="domains" type="domain_list_type" minOccurs="0"/>
 		<xs:element name="started" type="xs:boolean" default="0" minOccurs="0"/>
 		<xs:element name="attributes" type="session_attributes_type" minOccurs="0"/>
-- 
2.1.4




More information about the lttng-dev mailing list