docs: Add supported versions and fix-backport policy
[lttng-tools.git] / include / lttng / log-level-rule.h
1 /*
2 * Copyright (C) 2020 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
3 *
4 * SPDX-License-Identifier: LGPL-2.1-only
5 *
6 */
7
8 #ifndef LTTNG_LOG_LEVEL_RULE_H
9 #define LTTNG_LOG_LEVEL_RULE_H
10
11 #include <lttng/lttng-export.h>
12
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16
17 struct lttng_log_level_rule;
18
19 enum lttng_log_level_rule_type {
20 LTTNG_LOG_LEVEL_RULE_TYPE_UNKNOWN = -1,
21 LTTNG_LOG_LEVEL_RULE_TYPE_EXACTLY = 0,
22 LTTNG_LOG_LEVEL_RULE_TYPE_AT_LEAST_AS_SEVERE_AS = 1,
23 };
24
25 enum lttng_log_level_rule_status {
26 LTTNG_LOG_LEVEL_RULE_STATUS_OK = 0,
27 LTTNG_LOG_LEVEL_RULE_STATUS_ERROR = -1,
28 LTTNG_LOG_LEVEL_RULE_STATUS_INVALID = -3,
29 };
30
31 /*
32 * Returns the type of the log level rule `rule`, or:
33 *
34 * `LTTNG_LOG_LEVEL_RULE_TYPE_UNKNOWN`:
35 * `rule` is `NULL`.
36 */
37 LTTNG_EXPORT extern enum lttng_log_level_rule_type lttng_log_level_rule_get_type(
38 const struct lttng_log_level_rule *rule);
39
40 /*
41 * Creates a log level rule for which a log level must match exactly `level` to
42 * be considered.
43 *
44 * Returns `NULL` if:
45 *
46 * * There's a memory error.
47 *
48 * The returned log level rule must be destroyed using
49 * lttng_log_level_rule_destroy().
50 */
51 LTTNG_EXPORT extern struct lttng_log_level_rule *lttng_log_level_rule_exactly_create(
52 int level);
53
54 /*
55 * Sets `level` to the level of the "exactly" log level rule `rule`.
56 *
57 * Returns:
58 *
59 * `LTTNG_LOG_LEVEL_RULE_STATUS_OK`:
60 * Success.
61 *
62 * `LTTNG_LOG_LEVEL_RULE_STATUS_INVALID`:
63 * * `rule` is NULL.
64 * * `level` is NULL.
65 * * The type of `rule` is not `LTTNG_LOG_LEVEL_RULE_TYPE_EXACTLY`.
66 */
67 LTTNG_EXPORT extern enum lttng_log_level_rule_status lttng_log_level_rule_exactly_get_level(
68 const struct lttng_log_level_rule *rule, int *level);
69
70 /*
71 * Creates a log level rule for which a log level must be at least as severe as
72 * `level` to be considered.
73 *
74 * Returns `NULL` if:
75 *
76 * * There's a memory error.
77 *
78 * The returned log level rule must be destroyed using
79 * lttng_log_level_rule_destroy().
80 */
81 LTTNG_EXPORT extern struct lttng_log_level_rule *
82 lttng_log_level_rule_at_least_as_severe_as_create(int level);
83
84 /*
85 * Sets `level` to the level of the "at least as severe as" log level rule
86 * `rule`.
87 *
88 * Returns:
89 *
90 * `LTTNG_LOG_LEVEL_RULE_STATUS_OK`:
91 * Success.
92 *
93 * `LTTNG_LOG_LEVEL_RULE_STATUS_INVALID`:
94 * * `rule` is NULL.
95 * * `level` is NULL.
96 * * The type of `rule` is not
97 * `LTTNG_LOG_LEVEL_RULE_TYPE_AT_LEAST_AS_SEVERE_AS`.
98 */
99 LTTNG_EXPORT extern enum lttng_log_level_rule_status
100 lttng_log_level_rule_at_least_as_severe_as_get_level(
101 const struct lttng_log_level_rule *rule, int *level);
102
103 /*
104 * Destroy the log level rule `log_level_rule` if not `NULL`.
105 */
106 LTTNG_EXPORT extern void lttng_log_level_rule_destroy(
107 struct lttng_log_level_rule *log_level_rule);
108
109 #ifdef __cplusplus
110 }
111 #endif
112
113 #endif /* LTTNG_LOG_LEVEL_RULE_H */
This page took 0.030947 seconds and 4 git commands to generate.