2 * Copyright (C) 2018 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
4 * SPDX-License-Identifier: GPL-2.0-only
11 #include <lttng/tracker.h>
13 #include <urcu/list.h>
14 #include <urcu/rculfhash.h>
16 enum lttng_tracker_list_state
{
23 struct lttng_tracker_list_node
{
24 struct lttng_tracker_id
*id
;
26 struct cds_list_head list_node
;
27 struct cds_lfht_node ht_node
;
28 struct rcu_head rcu_head
;
31 struct lttng_tracker_list
{
32 struct cds_list_head list_head
;
33 /* Hash table for O(1) removal lookup. */
35 enum lttng_tracker_list_state state
;
38 struct lttng_tracker_list
*lttng_tracker_list_create(void);
39 void lttng_tracker_list_destroy(struct lttng_tracker_list
*tracker_list
);
41 int lttng_tracker_list_add(struct lttng_tracker_list
*tracker_list
,
42 const struct lttng_tracker_id
*id
);
43 int lttng_tracker_list_remove(struct lttng_tracker_list
*tracker_list
,
44 const struct lttng_tracker_id
*id
);
46 int lttng_tracker_id_lookup_string(enum lttng_tracker_type tracker_type
,
47 const struct lttng_tracker_id
*id
,
49 int lttng_tracker_id_get_list(const struct lttng_tracker_list
*tracker_list
,
50 struct lttng_tracker_ids
**_ids
);
51 int lttng_tracker_id_set_list(struct lttng_tracker_list
*tracker_list
,
52 const struct lttng_tracker_ids
*_ids
);
54 #endif /* _LTT_TRACKER_H */