Document libbabeltrace2's C API
[babeltrace.git] / include / babeltrace2 / trace-ir / event.h
CommitLineData
924dc299
PP
1#ifndef BABELTRACE2_TRACE_IR_EVENT_H
2#define BABELTRACE2_TRACE_IR_EVENT_H
c057dea0
PP
3
4/*
bbb7b5f0 5 * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation
c057dea0 6 *
c057dea0
PP
7 * Permission is hereby granted, free of charge, to any person obtaining a copy
8 * of this software and associated documentation files (the "Software"), to deal
9 * in the Software without restriction, including without limitation the rights
10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 * copies of the Software, and to permit persons to whom the Software is
12 * furnished to do so, subject to the following conditions:
13 *
14 * The above copyright notice and this permission notice shall be included in
15 * all copies or substantial portions of the Software.
16 *
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 * SOFTWARE.
c057dea0
PP
24 */
25
4fa90f32
PP
26#ifndef __BT_IN_BABELTRACE_H
27# error "Please include <babeltrace2/babeltrace.h> instead."
28#endif
29
3fadfbc0 30#include <babeltrace2/types.h>
b19ff26f 31
c057dea0
PP
32#ifdef __cplusplus
33extern "C" {
34#endif
35
43c59509
PP
36/*!
37@defgroup api-tir-ev Event
38@ingroup api-tir
39
40@brief
41 Trace event.
42
43An <strong><em>event</em></strong> represents a trace event record.
44
45An event is an instance of an \bt_ev_cls:
46
47@image html trace-structure.png
48
49In the illustration above, notice that:
50
51- A \bt_stream is a conceptual \ref api-msg-seq "sequence of messages",
52 some of which are \bt_p_ev_msg.
53- An event message contains an \bt_ev.
54- An event is an instance of an event class.
55- The \ref api-tir-ev-prop-payload "payload field" of an event is an
56 instance of the \ref api-tir-ev-cls-prop-p-fc "payload field class"
57 which an event class contains.
58
59Borrow the class of an event with bt_event_borrow_class() and
60bt_event_borrow_class_const().
61
62An event is a \ref api-tir "trace IR" data object.
63
64You cannot directly create an event: there's no
65<code>bt_event_create()</code> function. The \bt_name library
66creates an event within an \bt_ev_msg from an \bt_ev_cls.
67Therefore, to fill the fields of an event, you must first
68borrow the event from an event message with
69bt_message_event_borrow_event().
70
71An event is a \ref api-fund-unique-object "unique object": it belongs to
72an \bt_ev_msg.
73
74Some library functions \ref api-fund-freezing "freeze" events on
75success. The documentation of those functions indicate this
76postcondition.
77
78The type of an event is #bt_event.
79
80An event conceptually belongs to a \bt_stream. Borrow the stream of an
81event with bt_event_borrow_stream() and bt_event_borrow_stream_const().
82
83If the event's stream's class
84\ref api-tir-stream-cls-prop-supports-pkt "supports packets",
85the event also belongs to a \bt_pkt. In that case, borrow the packet of
86an event with bt_event_borrow_packet() and
87bt_event_borrow_packet_const().
88
89Because a stream or a packet could contain millions of events, there are
90no actual links from a stream or from a packet to its events.
91
92<h1>Properties</h1>
93
94An event has the following properties:
95
96<dl>
97 <dt>\anchor api-tir-ev-prop-payload Payload field</dt>
98 <dd>
99 Event's payload \bt_field.
100
101 The payload of an event contains its main trace data.
102
103 The \ref api-tir-fc "class" of an event's payload field is set
104 at the event's \ref api-tir-ev-cls "class" level. See
105 bt_event_class_set_payload_field_class(),
106 bt_event_class_borrow_payload_field_class(), and
107 bt_event_class_borrow_payload_field_class_const().
108
109 Use bt_event_borrow_payload_field() and
110 bt_event_borrow_payload_field_const().
111 </dd>
112
113 <dt>\anchor api-tir-ev-prop-spec-ctx Specific context field</dt>
114 <dd>
115 Event's specific context \bt_field.
116
117 The specific context of an event contains
118 any contextual data of which the layout is specific to the
119 event's \ref api-tir-ev-cls "class" and which does not belong to the
120 payload.
121
122 The \ref api-tir-fc "class" of an event's specific context field is
123 set at the event's \ref api-tir-ev-cls "class" level. See
124 bt_event_class_set_specific_context_field_class()
125 bt_event_class_borrow_specific_context_field_class(),
126 and bt_event_class_borrow_specific_context_field_class_const()
127
128 Use bt_event_borrow_specific_context_field() and
129 bt_event_borrow_specific_context_field_const().
130 </dd>
131
132 <dt>\anchor api-tir-ev-prop-common-ctx Common context field</dt>
133 <dd>
134 Event's common context \bt_field.
135
136 The common context of an event contains contextual data of which the
137 layout is common to all the \bt_p_ev_cls of the
138 event's stream's \ref api-tir-stream-cls "class".
139
140 The \ref api-tir-fc "class" of an event's common context field is set
141 at the event's \bt_stream_cls level. See
142 bt_stream_class_set_event_common_context_field_class()
143 bt_stream_class_borrow_event_common_context_field_class(),
144 and bt_stream_class_borrow_event_common_context_field_class_const().
145
146 Use bt_event_borrow_common_context_field() and
147 bt_event_borrow_common_context_field_const().
148 </dd>
149</dl>
150*/
151
152/*! @{ */
153
154/*!
155@name Type
156@{
157
158@typedef struct bt_event bt_event;
159
160@brief
161 Event.
162
163@}
164*/
165
166/*!
167@name Class access
168@{
169*/
170
171/*!
172@brief
173 Borrows the \ref api-tir-ev-cls "class" of the event \bt_p{event}.
174
175@param[in] event
176 Event of which to borrow the class.
177
178@returns
179 \em Borrowed reference of the class of \bt_p{event}.
180
181@bt_pre_not_null{event}
182
183@sa bt_event_borrow_class_const() &mdash;
184 \c const version of this function.
185*/
b19ff26f 186extern bt_event_class *bt_event_borrow_class(bt_event *event);
56e18c4c 187
43c59509
PP
188/*!
189@brief
190 Borrows the \ref api-tir-ev-cls "class" of the event \bt_p{event}
191 (\c const version).
192
193See bt_event_borrow_class().
194*/
195extern const bt_event_class *bt_event_borrow_class_const(
196 const bt_event *event);
197
198/*! @} */
199
200/*!
201@name Stream access
202@{
203*/
204
205/*!
206@brief
207 Borrows the \bt_stream conceptually containing the event
208 \bt_p{event}.
209
210@param[in] event
211 Event of which to borrow the stream conceptually containing it.
56e18c4c 212
43c59509
PP
213@returns
214 \em Borrowed reference of the stream conceptually containing
215 \bt_p{event}.
216
217@bt_pre_not_null{event}
218
219@sa bt_event_borrow_stream_const() &mdash;
220 \c const version of this function.
221*/
b19ff26f 222extern bt_stream *bt_event_borrow_stream(bt_event *event);
56e18c4c 223
43c59509
PP
224/*!
225@brief
226 Borrows the \bt_stream conceptually containing the event
227 \bt_p{event} (\c const version).
228
229See bt_event_borrow_stream().
230*/
231extern const bt_stream *bt_event_borrow_stream_const(
232 const bt_event *event);
233
234/*! @} */
235
236/*!
237@name Packet access
238@{
239*/
240
241/*!
242@brief
243 Borrows the \bt_pkt conceptually containing the event
244 \bt_p{event}.
245
246@attention
247 Only call this function if bt_stream_class_supports_packets()
248 returns #BT_TRUE for the \bt_stream_cls of \bt_p{event}.
249
250@param[in] event
251 Event of which to borrow the packet conceptually containing it.
252
253@returns
254 \em Borrowed reference of the packet conceptually containing
255 \bt_p{event}.
256
257@bt_pre_not_null{event}
258
259@sa bt_event_borrow_packet_const() &mdash;
260 \c const version of this function.
261*/
262extern bt_packet *bt_event_borrow_packet(bt_event *event);
263
264/*!
265@brief
266 Borrows the \bt_pkt conceptually containing the event
267 \bt_p{event} (\c const version).
268
269See bt_event_borrow_packet().
270*/
271extern const bt_packet *bt_event_borrow_packet_const(
272 const bt_event *event);
273
274/*! @} */
275
276/*!
277@name Properties
278@{
279*/
280
281/*!
282@brief
283 Borrows the payload \bt_field of the event \bt_p{event}.
284
285See the \ref api-tir-ev-prop-payload "payload field" property.
286
287@param[in] event
288 Event of which to borrow the payload field.
289
290@returns
291 \em Borrowed reference of the payload field of \bt_p{event},
292 or \c NULL if none.
293
294@bt_pre_not_null{event}
c057dea0 295
43c59509
PP
296@sa bt_event_borrow_payload_field_const() &mdash;
297 \c const version of this function.
298*/
299extern bt_field *bt_event_borrow_payload_field(bt_event *event);
300
301/*!
302@brief
303 Borrows the payload \bt_field of the event \bt_p{event}
304 (\c const version).
305
306See bt_event_borrow_payload_field().
307*/
308extern const bt_field *bt_event_borrow_payload_field_const(
309 const bt_event *event);
310
311/*!
312@brief
313 Borrows the specific context \bt_field of the event \bt_p{event}.
314
315See the \ref api-tir-ev-prop-spec-ctx "specific context field" property.
316
317@param[in] event
318 Event of which to borrow the specific context field.
319
320@returns
321 \em Borrowed reference of the specific context field of
322 \bt_p{event}, or \c NULL if none.
323
324@bt_pre_not_null{event}
325
326@sa bt_event_borrow_specific_context_field_const() &mdash;
327 \c const version of this function.
328*/
b19ff26f
PP
329extern bt_field *
330bt_event_borrow_specific_context_field(bt_event *event);
44c440bc 331
43c59509
PP
332/*!
333@brief
334 Borrows the specific context \bt_field of the event \bt_p{event}
335 (\c const version).
336
337See bt_event_borrow_specific_context_field().
338*/
339extern const bt_field *bt_event_borrow_specific_context_field_const(
340 const bt_event *event);
341
342/*!
343@brief
344 Borrows the common context \bt_field of the event \bt_p{event}.
345
346See the \ref api-tir-ev-prop-common-ctx "common context field" property.
347
348@param[in] event
349 Event of which to borrow the common context field.
350
351@returns
352 \em Borrowed reference of the common context field of
353 \bt_p{event}, or \c NULL if none.
354
355@bt_pre_not_null{event}
356
357@sa bt_event_borrow_specific_context_field_const() &mdash;
358 \c const version of this function.
359*/
360extern bt_field *
361bt_event_borrow_common_context_field(bt_event *event);
362
363/*!
364@brief
365 Borrows the common context \bt_field of the event \bt_p{event}
366 (\c const version).
367
368See bt_event_borrow_common_context_field().
369*/
370extern const bt_field *bt_event_borrow_common_context_field_const(
371 const bt_event *event);
372
373/*! @} */
374
375/*! @} */
094ff7c0 376
c057dea0
PP
377#ifdef __cplusplus
378}
379#endif
380
924dc299 381#endif /* BABELTRACE2_TRACE_IR_EVENT_H */
This page took 0.066333 seconds and 4 git commands to generate.