Move to kernel style SPDX license identifiers
[lttng-tools.git] / src / bin / lttng-sessiond / tracker.h
CommitLineData
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
16enum lttng_tracker_list_state {
17 LTTNG_TRACK_ALL,
18 LTTNG_TRACK_NONE,
19 LTTNG_TRACK_LIST,
20};
21
22/* Tracker ID */
23struct 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
31struct 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
38struct lttng_tracker_list *lttng_tracker_list_create(void);
39void lttng_tracker_list_destroy(struct lttng_tracker_list *tracker_list);
40
41int lttng_tracker_list_add(struct lttng_tracker_list *tracker_list,
42 const struct lttng_tracker_id *id);
43int lttng_tracker_list_remove(struct lttng_tracker_list *tracker_list,
44 const struct lttng_tracker_id *id);
45
46int lttng_tracker_id_lookup_string(enum lttng_tracker_type tracker_type,
47 const struct lttng_tracker_id *id,
48 int *result);
a7a533cd
JR
49int lttng_tracker_id_get_list(const struct lttng_tracker_list *tracker_list,
50 struct lttng_tracker_ids **_ids);
a8c3ad3e 51int 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 */
This page took 0.026606 seconds and 5 git commands to generate.