Refactoring: tracepoint: allow explicit tracepoint instance provider name
[lttng-ust.git] / include / lttng / ust-events.h
CommitLineData
8020ceb5 1/*
c0c0989a 2 * SPDX-License-Identifier: MIT
8020ceb5 3 *
c0c0989a 4 * Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
8020ceb5
MD
5 *
6 * Holds LTTng per-session event registry.
8020ceb5
MD
7 */
8
c0c0989a
MJ
9#ifndef _LTTNG_UST_EVENTS_H
10#define _LTTNG_UST_EVENTS_H
11
b4051ad8 12#include <stddef.h>
9f3fdbc6 13#include <stdint.h>
4318ae1b
MD
14#include <lttng/ust-abi.h>
15#include <lttng/ust-tracer.h>
2ae57758 16#include <lttng/ust-endian.h>
20f1eee7 17#include <float.h>
d58d1454
MD
18#include <errno.h>
19#include <urcu/ref.h>
20#include <pthread.h>
9af5d97a 21#include <limits.h>
8020ceb5 22
6453d237
MD
23#ifdef __cplusplus
24extern "C" {
25#endif
26
19d8b1b3
MD
27#define LTTNG_UST_UUID_LEN 16
28
71d31690
MD
29/*
30 * Tracepoint provider version. Compatibility based on the major number.
31 * Older tracepoint providers can always register to newer lttng-ust
32 * library, but the opposite is rejected: a newer tracepoint provider is
33 * rejected by an older lttng-ust library.
5b675300
MD
34 *
35 * LTTNG_UST_PROVIDER_MAJOR_OLDEST_COMPATIBLE is the floor value of
36 * oldest provider major version currently allowed, typically increased
37 * when LTTng-UST has an ABI-breaking soname bump.
71d31690 38 */
5b675300
MD
39#define LTTNG_UST_PROVIDER_MAJOR 3
40#define LTTNG_UST_PROVIDER_MAJOR_OLDEST_COMPATIBLE 3
71d31690
MD
41#define LTTNG_UST_PROVIDER_MINOR 0
42
e7bc0ef6 43struct lttng_ust_channel_buffer;
f69fe5fb 44struct lttng_ust_session;
b5457df5 45struct lttng_ust_ring_buffer_ctx;
25cff019 46struct lttng_ust_event_field;
4e48b5d2 47struct lttng_ust_registered_probe;
8020ceb5 48
37d5e202
MD
49/*
50 * Data structures used by tracepoint event declarations, and by the
a084756d 51 * tracer.
37d5e202
MD
52 */
53
8020ceb5
MD
54/* Type description */
55
a084756d
MD
56enum lttng_ust_type {
57 lttng_ust_type_integer,
58 lttng_ust_type_string,
59 lttng_ust_type_float,
60 lttng_ust_type_dynamic,
61 lttng_ust_type_enum,
62 lttng_ust_type_array,
63 lttng_ust_type_sequence,
64 lttng_ust_type_struct,
65 NR_LTTNG_UST_TYPE,
8020ceb5
MD
66};
67
a084756d
MD
68enum lttng_ust_string_encoding {
69 lttng_ust_string_encoding_none = 0,
70 lttng_ust_string_encoding_UTF8 = 1,
71 lttng_ust_string_encoding_ASCII = 2,
72 NR_LTTNG_UST_STRING_ENCODING,
8020ceb5
MD
73};
74
1a37a873 75struct lttng_ust_enum_value {
a6f80644
MD
76 unsigned long long value;
77 unsigned int signedness:1;
78};
79
1a37a873
MD
80enum lttng_ust_enum_entry_option {
81 LTTNG_UST_ENUM_ENTRY_OPTION_IS_AUTO = 1U << 0,
3e762260
PP
82};
83
891d6b55
MD
84/*
85 * Enumeration entry description
86 *
87 * IMPORTANT: this structure is part of the ABI between the probe and
88 * UST. Fields need to be only added at the end, never reordered, never
89 * removed.
90 *
91 * The field @struct_size should be used to determine the size of the
92 * structure. It should be queried before using additional fields added
93 * at the end of the structure.
94 */
95
96struct lttng_ust_enum_entry {
97 uint32_t struct_size;
98
1a37a873 99 struct lttng_ust_enum_value start, end; /* start and end are inclusive */
8020ceb5 100 const char *string;
891d6b55
MD
101 unsigned int options;
102
103 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
104};
105
a084756d
MD
106/*
107 * struct lttng_ust_type_common is fixed-size. Its children inherits
108 * from it by embedding struct lttng_ust_type_common as its first field.
109 */
110struct lttng_ust_type_common {
111 enum lttng_ust_type type;
112};
113
114struct lttng_ust_type_integer {
115 struct lttng_ust_type_common parent;
116 uint32_t struct_size;
8020ceb5
MD
117 unsigned int size; /* in bits */
118 unsigned short alignment; /* in bits */
119 unsigned int signedness:1;
120 unsigned int reverse_byte_order:1;
121 unsigned int base; /* 2, 8, 10, 16, for pretty print */
a084756d
MD
122};
123
124#define lttng_ust_type_integer_define(_type, _byte_order, _base) \
5defa774 125 ((struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(struct lttng_ust_type_integer, { \
a084756d
MD
126 .parent = { \
127 .type = lttng_ust_type_integer, \
128 }, \
129 .struct_size = sizeof(struct lttng_ust_type_integer), \
130 .size = sizeof(_type) * CHAR_BIT, \
dc325c1d 131 .alignment = lttng_ust_rb_alignof(_type) * CHAR_BIT, \
eae3c729 132 .signedness = lttng_ust_is_signed_type(_type), \
baa8acf3 133 .reverse_byte_order = _byte_order != LTTNG_UST_BYTE_ORDER, \
a084756d
MD
134 .base = _base, \
135 }))
136
137struct lttng_ust_type_float {
138 struct lttng_ust_type_common parent;
139 uint32_t struct_size;
140 unsigned int exp_dig; /* exponent digits, in bits */
141 unsigned int mant_dig; /* mantissa digits, in bits */
142 unsigned short alignment; /* in bits */
143 unsigned int reverse_byte_order:1;
8020ceb5
MD
144};
145
d3ed854b
MD
146/*
147 * Only float and double are supported. long double is not supported at
148 * the moment.
149 */
89080a49 150#define lttng_ust_float_mant_dig(_type) \
20f1eee7
MD
151 (sizeof(_type) == sizeof(float) ? FLT_MANT_DIG \
152 : (sizeof(_type) == sizeof(double) ? DBL_MANT_DIG \
d3ed854b 153 : 0))
20f1eee7 154
a084756d 155#define lttng_ust_type_float_define(_type) \
5defa774 156 ((struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(struct lttng_ust_type_float, { \
a084756d
MD
157 .parent = { \
158 .type = lttng_ust_type_float, \
159 }, \
160 .struct_size = sizeof(struct lttng_ust_type_float), \
161 .exp_dig = sizeof(_type) * CHAR_BIT \
89080a49
MD
162 - lttng_ust_float_mant_dig(_type), \
163 .mant_dig = lttng_ust_float_mant_dig(_type), \
dc325c1d 164 .alignment = lttng_ust_rb_alignof(_type) * CHAR_BIT, \
baa8acf3 165 .reverse_byte_order = LTTNG_UST_BYTE_ORDER != LTTNG_UST_FLOAT_WORD_ORDER, \
a084756d
MD
166 }))
167
168
169struct lttng_ust_type_string {
170 struct lttng_ust_type_common parent;
171 uint32_t struct_size;
172 enum lttng_ust_string_encoding encoding;
20f1eee7
MD
173};
174
a084756d
MD
175struct lttng_ust_type_enum {
176 struct lttng_ust_type_common parent;
177 uint32_t struct_size;
4e48b5d2
MD
178 const struct lttng_ust_enum_desc *desc; /* Enumeration mapping */
179 const struct lttng_ust_type_common *container_type;
a084756d
MD
180};
181
b29dc239
MD
182/*
183 * The alignment field in structure, array, and sequence types is a
184 * minimum alignment requirement. The actual alignment of a type may be
185 * larger than this explicit alignment value if its nested types have a
186 * larger alignment.
187 */
188
a084756d
MD
189struct lttng_ust_type_array {
190 struct lttng_ust_type_common parent;
191 uint32_t struct_size;
4e48b5d2 192 const struct lttng_ust_type_common *elem_type;
b29dc239
MD
193 unsigned int length; /* Num. elems. */
194 unsigned int alignment; /* Minimum alignment for this type. */
a084756d
MD
195 enum lttng_ust_string_encoding encoding;
196};
197
198struct lttng_ust_type_sequence {
199 struct lttng_ust_type_common parent;
200 uint32_t struct_size;
28db0827 201 const char *length_name; /* Length field name. If NULL, use previous field. */
4e48b5d2 202 const struct lttng_ust_type_common *elem_type;
b29dc239 203 unsigned int alignment; /* Minimum alignment before elements. */
a084756d
MD
204 enum lttng_ust_string_encoding encoding;
205};
206
207struct lttng_ust_type_struct {
208 struct lttng_ust_type_common parent;
209 uint32_t struct_size;
210 unsigned int nr_fields;
3d33ca1d
MD
211 const struct lttng_ust_event_field * const *fields; /* Array of pointers to fields. */
212 unsigned int alignment; /* Minimum alignment for this type. */
8020ceb5
MD
213};
214
891d6b55
MD
215/*
216 * Enumeration description
217 *
218 * IMPORTANT: this structure is part of the ABI between the probe and
219 * UST. Fields need to be only added at the end, never reordered, never
220 * removed.
221 *
222 * The field @struct_size should be used to determine the size of the
223 * structure. It should be queried before using additional fields added
224 * at the end of the structure.
225 */
226
227struct lttng_ust_enum_desc {
228 uint32_t struct_size;
229
8020ceb5 230 const char *name;
3d33ca1d 231 const struct lttng_ust_enum_entry * const *entries;
c785c634 232 unsigned int nr_entries;
891d6b55
MD
233
234 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
235};
236
180901e6
MD
237/*
238 * Event field description
239 *
240 * IMPORTANT: this structure is part of the ABI between the probe and
241 * UST. Fields need to be only added at the end, never reordered, never
242 * removed.
25cff019
MD
243 *
244 * The field @struct_size should be used to determine the size of the
245 * structure. It should be queried before using additional fields added
246 * at the end of the structure.
180901e6 247 */
8020ceb5 248
25cff019
MD
249struct lttng_ust_event_field {
250 uint32_t struct_size;
251
8020ceb5 252 const char *name;
4e48b5d2 253 const struct lttng_ust_type_common *type;
25cff019
MD
254 unsigned int nowrite:1, /* do not write into trace */
255 nofilter:1; /* do not consider for filter */
256
257 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
258};
259
5b675300
MD
260/*
261 * Tracepoint class description
262 *
263 * IMPORTANT: this structure is part of the ABI between the probe and
264 * UST. Fields need to be only added at the end, never reordered, never
265 * removed.
266 *
267 * The field @struct_size should be used to determine the size of the
268 * structure. It should be queried before using additional fields added
269 * at the end of the structure.
270 */
271
272struct lttng_ust_tracepoint_class {
273 uint32_t struct_size;
274
275 const struct lttng_ust_event_field * const *fields;
276 size_t nr_fields;
277 void (*probe_callback)(void);
278 const char *signature; /* Argument types/names received */
279
280 /* End of base ABI. Fields below should be used after checking struct_size. */
281};
37d5e202 282
dc11f93f
MD
283/*
284 * IMPORTANT: this structure is part of the ABI between the probe and
285 * UST. Fields need to be only added at the end, never reordered, never
286 * removed.
287 *
288 * The field @struct_size should be used to determine the size of the
289 * structure. It should be queried before using additional fields added
290 * at the end of the structure.
291 */
292struct lttng_ust_event_desc {
4e48b5d2 293 uint32_t struct_size; /* Size of this structure. */
dc177d11 294
5b4c6da4 295 const char *event_name;
4e48b5d2 296 const struct lttng_ust_probe_desc *probe_desc;
5b675300 297 const struct lttng_ust_tracepoint_class *tp_class;
37d5e202 298 const int **loglevel;
dc11f93f
MD
299 const char **model_emf_uri;
300
301 /* End of base ABI. Fields below should be used after checking struct_size. */
37d5e202
MD
302};
303
dc11f93f
MD
304/*
305 * IMPORTANT: this structure is part of the ABI between the probe and
306 * UST. Fields need to be only added at the end, never reordered, never
307 * removed.
308 *
309 * The field @struct_size should be used to determine the size of the
310 * structure. It should be queried before using additional fields added
311 * at the end of the structure.
312 */
313struct lttng_ust_probe_desc {
314 uint32_t struct_size; /* Size of this structure. */
315
5b4c6da4 316 const char *provider_name;
3d33ca1d 317 const struct lttng_ust_event_desc * const *event_desc;
37d5e202 318 unsigned int nr_events;
71d31690
MD
319 uint32_t major;
320 uint32_t minor;
dc11f93f
MD
321
322 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
323};
324
37d5e202
MD
325/* Data structures used by the tracer. */
326
b2e37d27
MD
327/*
328 * IMPORTANT: this structure is part of the ABI between the probe and
329 * UST. Fields need to be only added at the end, never reordered, never
330 * removed.
331 *
332 * The field @struct_size should be used to determine the size of the
333 * structure. It should be queried before using additional fields added
334 * at the end of the structure.
335 *
336 * The probe_ctx is not const because it may be extended to add future
337 * fields which could be modified by callbacks.
338 */
339struct lttng_ust_probe_ctx {
340 uint32_t struct_size; /* Size of this structure. */
341
342 void *ip; /* caller ip address */
343
344 /* End of base ABI. Fields below should be used after checking struct_size. */
345};
346
8020ceb5 347/*
7dd08bec
MD
348 * lttng_event structure is referred to by the tracing fast path. It
349 * must be kept small.
180901e6
MD
350 *
351 * IMPORTANT: this structure is part of the ABI between the probe and
352 * UST. Fields need to be only added at the end, never reordered, never
353 * removed.
8020ceb5 354 */
68bb7559 355
80333dfa
MD
356struct lttng_ust_event_common_private;
357
808edfc8
MD
358enum lttng_ust_event_type {
359 LTTNG_UST_EVENT_TYPE_RECORDER = 0,
360 LTTNG_UST_EVENT_TYPE_NOTIFIER = 1,
361};
362
a2e4d05e
MD
363/*
364 * Result of the run_filter() callback.
365 */
366enum lttng_ust_event_filter_result {
367 LTTNG_UST_EVENT_FILTER_ACCEPT = 0,
368 LTTNG_UST_EVENT_FILTER_REJECT = 1,
369};
370
93cfd247 371/*
6d35572a
MD
372 * IMPORTANT: this structure is part of the ABI between the probe and
373 * UST. Fields need to be only added at the end, never reordered, never
374 * removed.
375 *
93cfd247
MD
376 * struct lttng_ust_event_common is the common ancestor of the various
377 * public event actions. Inheritance is done by composition: The parent
378 * has a pointer to its child, and the child has a pointer to its
379 * parent. Inheritance of those public structures is done by composition
380 * to ensure both parent and child structures can be extended.
381 *
382 * The field @struct_size should be used to determine the size of the
383 * structure. It should be queried before using additional fields added
384 * at the end of the structure.
385 */
7ee76145 386struct lttng_ust_event_common {
80333dfa 387 uint32_t struct_size; /* Size of this structure. */
dc177d11 388
80333dfa
MD
389 struct lttng_ust_event_common_private *priv; /* Private event interface */
390
808edfc8 391 enum lttng_ust_event_type type;
ba99fbe2
MD
392 void *child; /* Pointer to child, for inheritance by aggregation. */
393
80333dfa 394 int enabled;
a2e4d05e 395 int eval_filter; /* Need to evaluate filters */
9c098f23 396 int (*run_filter)(const struct lttng_ust_event_common *event,
a2e4d05e 397 const char *stack_data,
b2e37d27 398 struct lttng_ust_probe_ctx *probe_ctx,
a2e4d05e 399 void *filter_ctx);
93cfd247
MD
400
401 /* End of base ABI. Fields below should be used after checking struct_size. */
80333dfa
MD
402};
403
2e70391c 404struct lttng_ust_event_recorder_private;
68bb7559 405
93cfd247 406/*
6d35572a
MD
407 * IMPORTANT: this structure is part of the ABI between the probe and
408 * UST. Fields need to be only added at the end, never reordered, never
409 * removed.
410 *
93cfd247
MD
411 * struct lttng_ust_event_recorder is the action for recording events
412 * into a ring buffer. It inherits from struct lttng_ust_event_common
413 * by composition to ensure both parent and child structure are
414 * extensible.
415 *
416 * The field @struct_size should be used to determine the size of the
417 * structure. It should be queried before using additional fields added
418 * at the end of the structure.
419 */
2e70391c
MD
420struct lttng_ust_event_recorder {
421 uint32_t struct_size; /* Size of this structure. */
dc177d11 422
ba99fbe2 423 struct lttng_ust_event_common *parent; /* Inheritance by aggregation. */
2e70391c 424 struct lttng_ust_event_recorder_private *priv; /* Private event record interface */
68bb7559 425
e7bc0ef6 426 struct lttng_ust_channel_buffer *chan;
93cfd247
MD
427
428 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
429};
430
a2e4d05e
MD
431/*
432 * IMPORTANT: this structure is part of the ABI between the probe and
433 * UST. Fields need to be only added at the end, never reordered, never
434 * removed.
435 *
436 * The field @struct_size should be used to determine the size of the
437 * structure. It should be queried before using additional fields added
438 * at the end of the structure.
439 */
440struct lttng_ust_notification_ctx {
441 uint32_t struct_size; /* Size of this structure. */
442 int eval_capture; /* Capture evaluation available. */
a2e4d05e
MD
443 /* End of base ABI. Fields below should be used after checking struct_size. */
444};
445
115db533
MD
446struct lttng_ust_event_notifier_private;
447
93cfd247 448/*
6d35572a
MD
449 * IMPORTANT: this structure is part of the ABI between the probe and
450 * UST. Fields need to be only added at the end, never reordered, never
451 * removed.
452 *
93cfd247
MD
453 * struct lttng_ust_event_notifier is the action for sending
454 * notifications. It inherits from struct lttng_ust_event_common
455 * by composition to ensure both parent and child structure are
456 * extensible.
457 *
458 * The field @struct_size should be used to determine the size of the
459 * structure. It should be queried before using additional fields added
460 * at the end of the structure.
461 */
d7d45c0d 462struct lttng_ust_event_notifier {
115db533 463 uint32_t struct_size; /* Size of this structure. */
105cf2eb 464
ba99fbe2 465 struct lttng_ust_event_common *parent; /* Inheritance by aggregation. */
115db533
MD
466 struct lttng_ust_event_notifier_private *priv; /* Private event notifier interface */
467
a2e4d05e 468 int eval_capture; /* Need to evaluate capture */
cda77256 469 void (*notification_send)(const struct lttng_ust_event_notifier *event_notifier,
a2e4d05e 470 const char *stack_data,
b2e37d27 471 struct lttng_ust_probe_ctx *probe_ctx,
a2e4d05e 472 struct lttng_ust_notification_ctx *notif_ctx);
93cfd247
MD
473
474 /* End of base ABI. Fields below should be used after checking struct_size. */
d8d2416d
FD
475};
476
b5457df5 477struct lttng_ust_ring_buffer_channel;
14b6f891 478struct lttng_ust_channel_buffer_ops_private;
8d8a24c8 479
180901e6
MD
480/*
481 * IMPORTANT: this structure is part of the ABI between the probe and
482 * UST. Fields need to be only added at the end, never reordered, never
483 * removed.
49926dbd
MD
484 *
485 * The field @struct_size should be used to determine the size of the
486 * structure. It should be queried before using additional fields added
487 * at the end of the structure.
180901e6 488 */
14b6f891 489struct lttng_ust_channel_buffer_ops {
49926dbd
MD
490 uint32_t struct_size;
491
14b6f891 492 struct lttng_ust_channel_buffer_ops_private *priv; /* Private channel buffer ops interface */
a880bae5 493
b5457df5
MD
494 int (*event_reserve)(struct lttng_ust_ring_buffer_ctx *ctx);
495 void (*event_commit)(struct lttng_ust_ring_buffer_ctx *ctx);
496 void (*event_write)(struct lttng_ust_ring_buffer_ctx *ctx,
8936b6c0 497 const void *src, size_t len, size_t alignment);
b5457df5 498 void (*event_strcpy)(struct lttng_ust_ring_buffer_ctx *ctx,
a44c74d9 499 const char *src, size_t len);
b5457df5 500 void (*event_pstrcpy_pad)(struct lttng_ust_ring_buffer_ctx *ctx,
27927814 501 const char *src, size_t len);
49926dbd
MD
502
503 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
504};
505
e7bc0ef6
MD
506enum lttng_ust_channel_type {
507 LTTNG_UST_CHANNEL_TYPE_BUFFER = 0,
508};
509
510struct lttng_ust_channel_common_private;
511
180901e6
MD
512/*
513 * IMPORTANT: this structure is part of the ABI between the probe and
514 * UST. Fields need to be only added at the end, never reordered, never
515 * removed.
e7bc0ef6
MD
516 *
517 * The field @struct_size should be used to determine the size of the
518 * structure. It should be queried before using additional fields added
519 * at the end of the structure.
180901e6 520 */
e7bc0ef6
MD
521struct lttng_ust_channel_common {
522 uint32_t struct_size; /* Size of this structure. */
523
524 struct lttng_ust_channel_common_private *priv; /* Private channel interface */
525
526 enum lttng_ust_channel_type type;
527 void *child; /* Pointer to child, for inheritance by aggregation. */
528
976fe9ea 529 int enabled;
f69fe5fb 530 struct lttng_ust_session *session;
e7bc0ef6
MD
531
532 /* End of base ABI. Fields below should be used after checking struct_size. */
533};
534
535struct lttng_ust_channel_buffer_private;
536
537/*
538 * IMPORTANT: this structure is part of the ABI between the probe and
539 * UST. Fields need to be only added at the end, never reordered, never
540 * removed.
541 *
542 * The field @struct_size should be used to determine the size of the
543 * structure. It should be queried before using additional fields added
544 * at the end of the structure.
545 */
546struct lttng_ust_channel_buffer {
547 uint32_t struct_size; /* Size of this structure. */
548
549 struct lttng_ust_channel_common *parent; /* Inheritance by aggregation. */
550 struct lttng_ust_channel_buffer_private *priv; /* Private channel buffer interface */
551
14b6f891 552 struct lttng_ust_channel_buffer_ops *ops;
a3f61e7f 553
e7bc0ef6 554 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
555};
556
2a9d9339
MD
557/*
558 * IMPORTANT: this structure is part of the ABI between the probe and
559 * UST. Fields need to be only added at the end, never reordered, never
560 * removed.
561 *
562 * The field @struct_size should be used to determine the size of the
563 * structure. It should be queried before using additional fields added
564 * at the end of the structure.
565 */
566struct lttng_ust_stack_ctx {
567 uint32_t struct_size; /* Size of this structure */
568
2e70391c 569 struct lttng_ust_event_recorder *event_recorder;
2a9d9339
MD
570
571 /* End of base ABI. Fields below should be used after checking struct_size. */
53569322
MD
572};
573
bdb12629
MD
574struct lttng_ust_session_private;
575
180901e6
MD
576/*
577 * IMPORTANT: this structure is part of the ABI between the probe and
578 * UST. Fields need to be only added at the end, never reordered, never
579 * removed.
6d35572a
MD
580 *
581 * The field @struct_size should be used to determine the size of the
582 * structure. It should be queried before using additional fields added
583 * at the end of the structure.
180901e6 584 */
f69fe5fb 585struct lttng_ust_session {
bd640d74 586 uint32_t struct_size; /* Size of this structure */
dc177d11 587
bdb12629
MD
588 struct lttng_ust_session_private *priv; /* Private session interface */
589
e58095ef 590 int active; /* Is trace session active ? */
6d35572a
MD
591
592 /* End of base ABI. Fields below should be used after checking struct_size. */
8020ceb5
MD
593};
594
4e48b5d2
MD
595/*
596 * On successful registration of a probe, a pointer to an opaque
597 * structure is returned. This pointer should be passed to
598 * lttng_ust_probe_unregister for unregistration.
599 * lttng_ust_probe_register returns NULL on error.
600 */
601struct lttng_ust_registered_probe *lttng_ust_probe_register(const struct lttng_ust_probe_desc *desc);
602
603void lttng_ust_probe_unregister(struct lttng_ust_registered_probe *reg_probe);
9f3fdbc6 604
fc80554e 605/*
0af0bdb2
MJ
606 * Applications that change their procname and need the new value to be
607 * reflected in the procname event context have to call this function to clear
608 * the internally cached value. This should not be called from a signal
609 * handler.
fc80554e 610 */
0af0bdb2 611void lttng_ust_context_procname_reset(void);
d58d1454 612
6453d237
MD
613#ifdef __cplusplus
614}
615#endif
616
51489cad 617#endif /* _LTTNG_UST_EVENTS_H */
This page took 0.074167 seconds and 4 git commands to generate.