Commit | Line | Data |
---|---|---|
85b05318 JR |
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 | ||
4bd69c5f SM |
11 | #include <lttng/lttng-export.h> |
12 | ||
85b05318 JR |
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 | */ | |
4bd69c5f | 37 | LTTNG_EXPORT extern enum lttng_log_level_rule_type lttng_log_level_rule_get_type( |
85b05318 JR |
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 | */ | |
4bd69c5f | 51 | LTTNG_EXPORT extern struct lttng_log_level_rule *lttng_log_level_rule_exactly_create( |
85b05318 JR |
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 | */ | |
4bd69c5f | 67 | LTTNG_EXPORT extern enum lttng_log_level_rule_status lttng_log_level_rule_exactly_get_level( |
85b05318 JR |
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 | */ | |
4bd69c5f | 81 | LTTNG_EXPORT extern struct lttng_log_level_rule * |
85b05318 JR |
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 | */ | |
4bd69c5f | 99 | LTTNG_EXPORT extern enum lttng_log_level_rule_status |
85b05318 JR |
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 | */ | |
4bd69c5f | 106 | LTTNG_EXPORT extern void lttng_log_level_rule_destroy( |
85b05318 JR |
107 | struct lttng_log_level_rule *log_level_rule); |
108 | ||
109 | #ifdef __cplusplus | |
110 | } | |
111 | #endif | |
112 | ||
113 | #endif /* LTTNG_LOG_LEVEL_RULE_H */ |