-/*
- * Protected by session mutex held by caller.
- * On success, _ids and the ids it contains must be freed by the caller.
- */
-int lttng_tracker_id_get_list(const struct lttng_tracker_list *tracker_list,
- struct lttng_tracker_ids **_ids)
-{
- int retval = LTTNG_OK, ret;
- struct lttng_tracker_list_node *n;
- ssize_t count = 0, i = 0;
- struct lttng_tracker_ids *ids = NULL;
- struct lttng_tracker_id *id;
- enum lttng_tracker_id_status status;
-
- switch (tracker_list->state) {
- case LTTNG_TRACK_LIST:
- cds_list_for_each_entry (
- n, &tracker_list->list_head, list_node) {
- count++;
- }
- ids = lttng_tracker_ids_create(count);
- if (ids == NULL) {
- PERROR("Failed to allocate tracked ID list");
- retval = -LTTNG_ERR_NOMEM;
- goto end;
- }
- cds_list_for_each_entry (
- n, &tracker_list->list_head, list_node) {
- id = lttng_tracker_ids_get_pointer_of_index(ids, i);
- if (!id) {
- retval = -LTTNG_ERR_INVALID;
- goto error;
- }
-
- ret = lttng_tracker_id_copy(id, n->id);
- if (ret) {
- retval = -LTTNG_ERR_NOMEM;
- goto error;
- }
- i++;
- }
- break;
- case LTTNG_TRACK_ALL:
-
- ids = lttng_tracker_ids_create(1);
- if (ids == NULL) {
- PERROR("Failed to allocate tracked ID list");
- retval = -LTTNG_ERR_NOMEM;
- goto end;
- }