{
struct lttng_handle *handle = NULL;
- if (domain == NULL) {
- goto end;
- }
-
handle = zmalloc(sizeof(struct lttng_handle));
if (handle == NULL) {
PERROR("malloc handle");
lttng_ctl_copy_string(handle->session_name, session_name,
sizeof(handle->session_name));
- /* Copy lttng domain */
- lttng_ctl_copy_lttng_domain(&handle->domain, domain);
+ /* Copy lttng domain or leave initialized to 0. */
+ if (domain) {
+ lttng_ctl_copy_lttng_domain(&handle->domain, domain);
+ }
end:
return handle;
}
lsm.cmd_type = LTTNG_DISABLE_EVENT;
- if (ev->name[0] == '\0') {
- /* Disable all events */
- lttng_ctl_copy_string(ev->name, "*", sizeof(ev->name));
- }
lttng_ctl_copy_lttng_domain(&lsm.domain, &handle->domain);
/* FIXME: copying non-packed struct to packed struct. */
struct lttcomm_session_msg lsm;
struct lttng_uri *uris = NULL;
- if (name == NULL) {
+ if (name == NULL || timer_interval == 0) {
return -LTTNG_ERR_INVALID;
}
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;
+}
+
/*
* lib constructor
*/