2 * Copyright (C) 2021 Jérémie Galarneau <jeremie.galarneau@efficios.com>
4 * SPDX-License-Identifier: LGPL-2.1-only
8 #ifndef LTTNG_ACTION_PATH_H
9 #define LTTNG_ACTION_PATH_H
11 #include <lttng/lttng-export.h>
16 struct lttng_action_path
;
22 enum lttng_action_path_status
{
23 LTTNG_ACTION_PATH_STATUS_OK
= 0,
24 LTTNG_ACTION_PATH_STATUS_INVALID
= -1,
28 * Create a path to an action.
30 * An action path indicates how to reach a given action from the action
31 * of a trigger. The action of a trigger is implicitly the root of an action
34 * The indexes of an action path allow the resolution of an action.
35 * The indexes that make-up an action path indicate the index of the successive
36 * action lists that must be traversed to reach the target action.
38 * For instance, an action path that has a single index 'N' implies that:
39 * - The root action is a list,
40 * - The target action is the 'N'-th action in that list.
42 * An action path with two indexes, N1 and N2 implies that:
43 * - The root action is an action list (L1),
44 * - The N1-th action of the action list (L1) is also a list (L2),
45 * - The target action is the N2-th action of the L2 list.
47 * The `indexes` are copied internally and can be disposed-of by the caller.
49 LTTNG_EXPORT
extern struct lttng_action_path
*lttng_action_path_create(const uint64_t *indexes
,
53 * Get the count of indexes in an action path.
55 LTTNG_EXPORT
extern enum lttng_action_path_status
56 lttng_action_path_get_index_count(const struct lttng_action_path
*path
, size_t *index_count
);
59 * Get an index from an action path.
61 LTTNG_EXPORT
extern enum lttng_action_path_status
lttng_action_path_get_index_at_index(
62 const struct lttng_action_path
*path
, size_t path_index
, uint64_t *out_index
);
65 * Destroy an action path object.
67 LTTNG_EXPORT
extern void lttng_action_path_destroy(struct lttng_action_path
*action_path
);
73 #endif /* LTTNG_ACTION_PATH_H */