-/*
- * 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_no_cmd_header(&lsm, uris,
- sizeof(struct lttng_uri) * size, NULL);
-
- free(uris);
- return ret;
-}
-
-/*
- * Create a session exclusively used for live.
- *
- * Returns LTTNG_OK on success or a negative error code.
- */
-int lttng_create_session_live(const char *name, const char *url,
- unsigned int timer_interval)
-{
- int ret;
- ssize_t size;
- struct lttcomm_session_msg lsm;
- struct lttng_uri *uris = NULL;
-
- if (name == NULL || timer_interval == 0) {
- return -LTTNG_ERR_INVALID;
- }
-
- memset(&lsm, 0, sizeof(lsm));
-
- lsm.cmd_type = LTTNG_CREATE_SESSION_LIVE;
- lttng_ctl_copy_string(lsm.session.name, name, sizeof(lsm.session.name));
-
- if (url) {
- size = uri_parse_str_urls(url, NULL, &uris);
- if (size <= 0) {
- ret = -LTTNG_ERR_INVALID;
- goto end;
- }
-
- /* file:// is not accepted for live session. */
- if (uris[0].dtype == LTTNG_DST_PATH) {
- ret = -LTTNG_ERR_INVALID;
- goto end;
- }
- } else {
- size = 0;
- }
-
- lsm.u.session_live.nb_uri = size;
- lsm.u.session_live.timer_interval = timer_interval;
-
- ret = lttng_ctl_ask_sessiond_varlen_no_cmd_header(&lsm, uris,
- sizeof(struct lttng_uri) * size, NULL);
-
-end:
- free(uris);
- return ret;
-}
-
-/*
- * List PIDs in the tracker.
- *
- * enabled is set to whether the PID tracker is enabled.
- * pids is set to an allocated array of PIDs currently tracked. On
- * success, pids must be freed by the caller.
- * nr_pids is set to the number of entries contained by the pids array.
- *
- * Returns 0 on success, else a negative LTTng error code.
- */
-int lttng_list_tracker_pids(struct lttng_handle *handle,
- int *_enabled, int32_t **_pids, size_t *_nr_pids)
-{
- int ret;
- int enabled = 1;
- struct lttcomm_session_msg lsm;
- size_t nr_pids;
- int32_t *pids;
-
- if (handle == NULL) {
- return -LTTNG_ERR_INVALID;
- }
-
- memset(&lsm, 0, sizeof(lsm));
- lsm.cmd_type = LTTNG_LIST_TRACKER_PIDS;
- lttng_ctl_copy_string(lsm.session.name, handle->session_name,
- sizeof(lsm.session.name));
- lttng_ctl_copy_lttng_domain(&lsm.domain, &handle->domain);
-
- ret = lttng_ctl_ask_sessiond(&lsm, (void **) &pids);
- if (ret < 0) {
- return ret;
- }
- nr_pids = ret / sizeof(int32_t);
- if (nr_pids == 1 && pids[0] == -1) {
- free(pids);
- pids = NULL;
- enabled = 0;
- nr_pids = 0;
- }
- *_enabled = enabled;
- *_pids = pids;
- *_nr_pids = nr_pids;
- return 0;
-}
-