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
14 struct lttng_action_path
;
20 enum lttng_action_path_status
{
21 LTTNG_ACTION_PATH_STATUS_OK
= 0,
22 LTTNG_ACTION_PATH_STATUS_INVALID
= -1,
26 * Create a path to an action.
28 * An action path indicates how to reach a given action from the action
29 * of a trigger. The action of a trigger is implicitly the root of an action
32 * The indexes of an action path allow the resolution of an action.
33 * The indexes that make-up an action path indicate the index of the successive
34 * action lists that must be traversed to reach the target action.
36 * For instance, an action path that has a single index 'N' implies that:
37 * - The root action is a list,
38 * - The target action is the 'N'-th action in that list.
40 * An action path with two indexes, N1 and N2 implies that:
41 * - The root action is an action list (L1),
42 * - The N1-th action of the action list (L1) is also a list (L2),
43 * - The target action is the N2-th action of the L2 list.
45 * The `indexes` are copied internally and can be disposed-of by the caller.
47 extern struct lttng_action_path
*lttng_action_path_create(
48 const uint64_t *indexes
, size_t index_count
);
51 * Get the count of indexes in an action path.
53 extern enum lttng_action_path_status
lttng_action_path_get_index_count(
54 const struct lttng_action_path
*path
, size_t *index_count
);
57 * Get an index from an action path.
59 extern enum lttng_action_path_status
lttng_action_path_get_index_at_index(
60 const struct lttng_action_path
*path
,
65 * Destroy an action path object.
67 extern void lttng_action_path_destroy(struct lttng_action_path
*action_path
);
73 #endif /* LTTNG_ACTION_PATH_H */