Commit | Line | Data |
---|---|---|
a8c3ad3e | 1 | /* |
ab5be9fa | 2 | * Copyright (C) 2018 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> |
a8c3ad3e | 3 | * |
ab5be9fa | 4 | * SPDX-License-Identifier: GPL-2.0-only |
a8c3ad3e | 5 | * |
a8c3ad3e MD |
6 | */ |
7 | ||
ab5be9fa MJ |
8 | #ifndef _LTT_TRACKER_H |
9 | #define _LTT_TRACKER_H | |
10 | ||
2d97a006 | 11 | #include <lttng/tracker.h> |
a8c3ad3e MD |
12 | #include <urcu.h> |
13 | #include <urcu/list.h> | |
14 | #include <urcu/rculfhash.h> | |
15 | ||
16 | enum lttng_tracker_list_state { | |
17 | LTTNG_TRACK_ALL, | |
18 | LTTNG_TRACK_NONE, | |
19 | LTTNG_TRACK_LIST, | |
20 | }; | |
21 | ||
22 | /* Tracker ID */ | |
23 | struct lttng_tracker_list_node { | |
2d97a006 | 24 | struct lttng_tracker_id *id; |
a8c3ad3e MD |
25 | |
26 | struct cds_list_head list_node; | |
27 | struct cds_lfht_node ht_node; | |
28 | struct rcu_head rcu_head; | |
29 | }; | |
30 | ||
31 | struct lttng_tracker_list { | |
32 | struct cds_list_head list_head; | |
33 | /* Hash table for O(1) removal lookup. */ | |
34 | struct cds_lfht *ht; | |
35 | enum lttng_tracker_list_state state; | |
36 | }; | |
37 | ||
38 | struct lttng_tracker_list *lttng_tracker_list_create(void); | |
39 | void lttng_tracker_list_destroy(struct lttng_tracker_list *tracker_list); | |
40 | ||
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); | |
45 | ||
46 | int lttng_tracker_id_lookup_string(enum lttng_tracker_type tracker_type, | |
47 | const struct lttng_tracker_id *id, | |
48 | int *result); | |
a7a533cd JR |
49 | int lttng_tracker_id_get_list(const struct lttng_tracker_list *tracker_list, |
50 | struct lttng_tracker_ids **_ids); | |
a8c3ad3e | 51 | int lttng_tracker_id_set_list(struct lttng_tracker_list *tracker_list, |
a7a533cd | 52 | const struct lttng_tracker_ids *_ids); |
a8c3ad3e MD |
53 | |
54 | #endif /* _LTT_TRACKER_H */ |