1 #ifndef BABELTRACE_CTF_WRITER_EVENT_H
2 #define BABELTRACE_CTF_WRITER_EVENT_H
5 * BabelTrace - CTF Writer: Event
7 * Copyright 2013, 2014 Jérémie Galarneau <jeremie.galarneau@efficios.com>
9 * Author: Jérémie Galarneau <jeremie.galarneau@efficios.com>
11 * Permission is hereby granted, free of charge, to any person obtaining a copy
12 * of this software and associated documentation files (the "Software"), to deal
13 * in the Software without restriction, including without limitation the rights
14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15 * copies of the Software, and to permit persons to whom the Software is
16 * furnished to do so, subject to the following conditions:
18 * The above copyright notice and this permission notice shall be included in
19 * all copies or substantial portions of the Software.
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29 * The Common Trace Format (CTF) Specification is available at
30 * http://www.efficios.com/ctf
33 #include <babeltrace/ref.h>
34 #include <babeltrace/ctf-ir/event-class.h>
35 #include <babeltrace/ctf-ir/event.h>
42 struct bt_ctf_event_class
;
45 struct bt_ctf_field_type
;
47 enum bt_ctf_event_class_log_level
{
48 /// Unknown, used for errors.
49 BT_CTF_EVENT_CLASS_LOG_LEVEL_UNKNOWN
= BT_EVENT_CLASS_LOG_LEVEL_UNKNOWN
,
51 /// Unspecified log level.
52 BT_CTF_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED
= BT_EVENT_CLASS_LOG_LEVEL_UNSPECIFIED
,
54 /// System is unusable.
55 BT_CTF_EVENT_CLASS_LOG_LEVEL_EMERGENCY
= BT_EVENT_CLASS_LOG_LEVEL_EMERGENCY
,
57 /// Action must be taken immediately.
58 BT_CTF_EVENT_CLASS_LOG_LEVEL_ALERT
= BT_EVENT_CLASS_LOG_LEVEL_ALERT
,
60 /// Critical conditions.
61 BT_CTF_EVENT_CLASS_LOG_LEVEL_CRITICAL
= BT_EVENT_CLASS_LOG_LEVEL_CRITICAL
,
64 BT_CTF_EVENT_CLASS_LOG_LEVEL_ERROR
= BT_EVENT_CLASS_LOG_LEVEL_ERROR
,
66 /// Warning conditions.
67 BT_CTF_EVENT_CLASS_LOG_LEVEL_WARNING
= BT_EVENT_CLASS_LOG_LEVEL_WARNING
,
69 /// Normal, but significant, condition.
70 BT_CTF_EVENT_CLASS_LOG_LEVEL_NOTICE
= BT_EVENT_CLASS_LOG_LEVEL_NOTICE
,
72 /// Informational message.
73 BT_CTF_EVENT_CLASS_LOG_LEVEL_INFO
= BT_EVENT_CLASS_LOG_LEVEL_INFO
,
75 /// Debug information with system-level scope (set of programs).
76 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_SYSTEM
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_SYSTEM
,
78 /// Debug information with program-level scope (set of processes).
79 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROGRAM
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_PROGRAM
,
81 /// Debug information with process-level scope (set of modules).
82 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_PROCESS
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_PROCESS
,
84 /// Debug information with module (executable/library) scope (set of units).
85 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_MODULE
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_MODULE
,
87 /// Debug information with compilation unit scope (set of functions).
88 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_UNIT
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_UNIT
,
90 /// Debug information with function-level scope.
91 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_FUNCTION
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_FUNCTION
,
93 /// Debug information with line-level scope (default log level).
94 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG_LINE
,
96 /// Debug-level message.
97 BT_CTF_EVENT_CLASS_LOG_LEVEL_DEBUG
= BT_EVENT_CLASS_LOG_LEVEL_DEBUG
,
100 extern struct bt_ctf_event
*bt_ctf_event_create(
101 struct bt_ctf_event_class
*event_class
);
103 extern struct bt_ctf_field
*bt_ctf_event_get_payload(struct bt_ctf_event
*event
,
106 extern int bt_ctf_event_set_payload(struct bt_ctf_event
*event
,
107 const char *name
, struct bt_ctf_field
*field
);
109 extern struct bt_ctf_field
*bt_ctf_event_get_payload_field(
110 struct bt_ctf_event
*event
);
112 extern int bt_ctf_event_set_payload_field(struct bt_ctf_event
*event
,
113 struct bt_ctf_field
*field
);
115 extern int bt_ctf_event_set_context(struct bt_ctf_event
*event
,
116 struct bt_ctf_field
*field
);
118 extern struct bt_ctf_field
*bt_ctf_event_get_context(
119 struct bt_ctf_event
*event
);
121 extern int bt_ctf_event_set_stream_event_context(struct bt_ctf_event
*event
,
122 struct bt_ctf_field
*field
);
124 extern struct bt_ctf_field
*bt_ctf_event_get_stream_event_context(
125 struct bt_ctf_event
*event
);
127 extern int bt_ctf_event_set_header(struct bt_ctf_event
*event
,
128 struct bt_ctf_field
*field
);
130 extern struct bt_ctf_field
*bt_ctf_event_get_header(
131 struct bt_ctf_event
*event
);
133 extern struct bt_ctf_stream
*bt_ctf_event_get_stream(
134 struct bt_ctf_event
*event
);
136 extern struct bt_ctf_event_class
*bt_ctf_event_get_class(
137 struct bt_ctf_event
*event
);
139 /* Pre-2.0 CTF writer compatibility */
141 void bt_ctf_event_get(struct bt_ctf_event
*event
)
146 /* Pre-2.0 CTF writer compatibility */
148 void bt_ctf_event_put(struct bt_ctf_event
*event
)
153 extern struct bt_ctf_event_class
*bt_ctf_event_class_create(const char *name
);
155 extern struct bt_ctf_stream_class
*bt_ctf_event_class_get_stream_class(
156 struct bt_ctf_event_class
*event_class
);
158 extern const char *bt_ctf_event_class_get_name(
159 struct bt_ctf_event_class
*event_class
);
161 extern int64_t bt_ctf_event_class_get_id(
162 struct bt_ctf_event_class
*event_class
);
164 extern int bt_ctf_event_class_set_id(
165 struct bt_ctf_event_class
*event_class
, uint64_t id
);
167 extern enum bt_ctf_event_class_log_level
bt_ctf_event_class_get_log_level(
168 struct bt_ctf_event_class
*event_class
);
170 extern int bt_ctf_event_class_set_log_level(
171 struct bt_ctf_event_class
*event_class
,
172 enum bt_ctf_event_class_log_level log_level
);
174 extern const char *bt_ctf_event_class_get_emf_uri(
175 struct bt_ctf_event_class
*event_class
);
177 extern int bt_ctf_event_class_set_emf_uri(
178 struct bt_ctf_event_class
*event_class
,
179 const char *emf_uri
);
181 extern struct bt_ctf_field_type
*bt_ctf_event_class_get_context_field_type(
182 struct bt_ctf_event_class
*event_class
);
184 extern int bt_ctf_event_class_set_context_field_type(
185 struct bt_ctf_event_class
*event_class
,
186 struct bt_ctf_field_type
*context_type
);
188 extern struct bt_ctf_field_type
*bt_ctf_event_class_get_payload_field_type(
189 struct bt_ctf_event_class
*event_class
);
191 extern int bt_ctf_event_class_set_payload_field_type(
192 struct bt_ctf_event_class
*event_class
,
193 struct bt_ctf_field_type
*payload_type
);
195 extern int bt_ctf_event_class_add_field(struct bt_ctf_event_class
*event_class
,
196 struct bt_ctf_field_type
*field_type
,
199 extern struct bt_ctf_field_type
*bt_ctf_event_class_get_field_by_name(
200 struct bt_ctf_event_class
*event_class
, const char *name
);
202 /* Pre-2.0 CTF writer compatibility */
204 void bt_ctf_event_class_get(struct bt_ctf_event_class
*event_class
)
209 /* Pre-2.0 CTF writer compatibility */
211 void bt_ctf_event_class_put(struct bt_ctf_event_class
*event_class
)
220 #endif /* BABELTRACE_CTF_WRITER_EVENT_H */