Add create session snapshot API in lttng-sessiond
[lttng-tools.git] / src / lib / lttng-ctl / lttng-ctl.c
index 3863aa1ceb9de16836d4edc6c55d908fd289e08f..d8d5db6c7ff6838d087309c421c83cb919e0758c 100644 (file)
@@ -1547,6 +1547,41 @@ int lttng_data_pending(const char *session_name)
        return ret;
 }
 
+/*
+ * Create a session exclusively used for snapshot.
+ *
+ * Returns LTTNG_OK on success or a negative error code.
+ */
+int lttng_create_session_snapshot(const char *name, const char *snapshot_url)
+{
+       int ret;
+       ssize_t size;
+       struct lttcomm_session_msg lsm;
+       struct lttng_uri *uris = NULL;
+
+       if (name == NULL) {
+               return -LTTNG_ERR_INVALID;
+       }
+
+       memset(&lsm, 0, sizeof(lsm));
+
+       lsm.cmd_type = LTTNG_CREATE_SESSION_SNAPSHOT;
+       lttng_ctl_copy_string(lsm.session.name, name, sizeof(lsm.session.name));
+
+       size = uri_parse_str_urls(snapshot_url, NULL, &uris);
+       if (size < 0) {
+               return -LTTNG_ERR_INVALID;
+       }
+
+       lsm.u.uri.size = size;
+
+       ret = lttng_ctl_ask_sessiond_varlen(&lsm, uris,
+                       sizeof(struct lttng_uri) * size, NULL);
+
+       free(uris);
+       return ret;
+}
+
 /*
  * lib constructor
  */
This page took 0.022902 seconds and 4 git commands to generate.