#include <urcu/compiler.h>
#include <urcu/rculist.h>
#include <lttng/ust-events.h>
-#include <lttng/ringbuffer-context.h>
+#include <lttng/ust-ringbuffer-context.h>
#include <lttng/ust-arch.h>
#include <lttng/ust-compiler.h>
#include <lttng/tracepoint.h>
pos = cds_list_entry(tp_rcu_dereference(pos->member.next), __typeof__(*pos), member))
/*
- * TRACEPOINT_EVENT_CLASS declares a class of tracepoints receiving the
+ * LTTNG_UST_TRACEPOINT_EVENT_CLASS declares a class of tracepoints receiving the
* same arguments and having the same field layout.
*
- * TRACEPOINT_EVENT_INSTANCE declares an instance of a tracepoint, with
+ * LTTNG_UST_TRACEPOINT_EVENT_INSTANCE declares an instance of a tracepoint, with
* its own provider and name. It refers to a class (template).
*
- * TRACEPOINT_EVENT declared both a class and an instance and does a
+ * LTTNG_UST_TRACEPOINT_EVENT declared both a class and an instance and does a
* direct mapping from the instance to the class.
*/
-#undef TRACEPOINT_EVENT
-#define TRACEPOINT_EVENT(_provider, _name, _args, _fields) \
- _TRACEPOINT_EVENT_CLASS(_provider, _name, \
- _TP_PARAMS(_args), \
- _TP_PARAMS(_fields)) \
- _TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \
- _TP_PARAMS(_args))
+#undef LTTNG_UST_TRACEPOINT_EVENT
+#define LTTNG_UST_TRACEPOINT_EVENT(_provider, _name, _args, _fields) \
+ LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, \
+ LTTNG_UST__TP_PARAMS(_args), \
+ LTTNG_UST__TP_PARAMS(_fields)) \
+ LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _name, _name, \
+ LTTNG_UST__TP_PARAMS(_args))
-#undef TRACEPOINT_EVENT_CLASS
-#define TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
- _TRACEPOINT_EVENT_CLASS(_provider, _name, _TP_PARAMS(_args), _TP_PARAMS(_fields))
+#undef LTTNG_UST_TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST_TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+ LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, LTTNG_UST__TP_PARAMS(_args), LTTNG_UST__TP_PARAMS(_fields))
-#undef TRACEPOINT_EVENT_INSTANCE
-#define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
- _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _TP_PARAMS(_args))
+#undef LTTNG_UST_TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+ LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, LTTNG_UST__TP_PARAMS(_args))
/* Helpers */
#define _TP_ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
/*
* Stage 0 of tracepoint event generation.
*
- * Check that each TRACEPOINT_EVENT provider argument match the
+ * Check that each LTTNG_UST_TRACEPOINT_EVENT provider argument match the
* TRACEPOINT_PROVIDER by creating dummy callbacks.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
static inline
-void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void)
+void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void)
lttng_ust_notrace;
static inline
-void _TP_COMBINE_TOKENS(__tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void)
+void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_mismatch_, TRACEPOINT_PROVIDER)(void)
{
}
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
- __tracepoint_provider_mismatch_##_provider();
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+ lttng_ust_tracepoint_provider_mismatch_##_provider();
-#undef _TRACEPOINT_EVENT_INSTANCE
-#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
- __tracepoint_provider_mismatch_##_provider();
+#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+ lttng_ust_tracepoint_provider_mismatch_##_provider();
static inline
-void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void)
+void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void)
lttng_ust_notrace;
static inline
-void _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void)
+void LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)(void)
{
#include TRACEPOINT_INCLUDE
}
/*
* Stage 0.1 of tracepoint event generation.
*
- * Check that each TRACEPOINT_EVENT provider:name does not exceed the
+ * Check that each LTTNG_UST_TRACEPOINT_EVENT provider:name does not exceed the
* tracepoint name length limit.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef _TRACEPOINT_EVENT_INSTANCE
-#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
-static const char \
- __tp_name_len_check##_provider##___##_name[LTTNG_UST_ABI_SYM_NAME_LEN] \
- __attribute__((unused)) = \
- #_provider ":" #_name;
+#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+ lttng_ust_tracepoint_validate_name_len(_provider, _name);
#include TRACEPOINT_INCLUDE
* class and the instance using the class actually match.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef _TRACEPOINT_EVENT_INSTANCE
-#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
-void __event_template_proto___##_provider##___##_template(_TP_ARGS_DATA_PROTO(_args));
+#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+void __event_template_proto___##_provider##___##_template(LTTNG_UST__TP_ARGS_DATA_PROTO(_args));
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
-void __event_template_proto___##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args));
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+void __event_template_proto___##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args));
#include TRACEPOINT_INCLUDE
/* Enumeration entry (single value) */
#undef ctf_enum_value
#define ctf_enum_value(_string, _value) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
.struct_size = sizeof(struct lttng_ust_enum_entry), \
.start = { \
.value = lttng_ust_is_signed_type(__typeof__(_value)) ? \
/* Enumeration entry (range) */
#undef ctf_enum_range
#define ctf_enum_range(_string, _range_start, _range_end) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
.struct_size = sizeof(struct lttng_ust_enum_entry), \
.start = { \
.value = lttng_ust_is_signed_type(__typeof__(_range_start)) ? \
/* Enumeration entry (automatic value; follows the rules of CTF) */
#undef ctf_enum_auto
#define ctf_enum_auto(_string) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_enum_entry, { \
.struct_size = sizeof(struct lttng_ust_enum_entry), \
.start = { \
.value = -1ULL, \
#undef TRACEPOINT_ENUM
#define TRACEPOINT_ENUM(_provider, _name, _values) \
- const struct lttng_ust_enum_entry *__enum_values__##_provider##_##_name[] = { \
+ const struct lttng_ust_enum_entry * const __enum_values__##_provider##_##_name[] = { \
_values \
ctf_enum_value("", 0) /* Dummy, 0-len array forbidden by C99. */ \
};
* Verifying array and sequence elements are of an integer type.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#include <lttng/ust-tracepoint-event-nowrite.h>
_elem_type_base) \
lttng_ust_ctf_array_element_type_is_supported(_type, _item);
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
_fields
#include TRACEPOINT_INCLUDE
* Each event produce an array of fields.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#include <lttng/ust-tracepoint-event-nowrite.h>
#undef _ctf_integer_ext
#define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _nowrite) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
.type = lttng_ust_type_integer_define(_type, _byte_order, _base), \
#undef _ctf_float
#define _ctf_float(_type, _item, _src, _nowrite) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
.type = lttng_ust_type_float_define(_type), \
#define _ctf_array_encoded(_type, _item, _src, _byte_order, \
_length, _encoding, _nowrite, \
_elem_type_base) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
- .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_array, { \
+ .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_array, { \
.parent = { \
.type = lttng_ust_type_array, \
}, \
#define _ctf_sequence_encoded(_type, _item, _src, _byte_order, \
_length_type, _src_length, _encoding, _nowrite, \
_elem_type_base) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = "_" #_item "_length", \
.type = lttng_ust_type_integer_define(_length_type, BYTE_ORDER, 10), \
.nowrite = _nowrite, \
.nofilter = 1, \
}), \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
- .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_sequence, { \
+ .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_sequence, { \
.parent = { \
.type = lttng_ust_type_sequence, \
}, \
#undef _ctf_string
#define _ctf_string(_item, _src, _nowrite) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
- .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_string, { \
+ .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_string, { \
.parent = { \
.type = lttng_ust_type_string, \
}, \
#undef _ctf_enum
#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
- __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
+ LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_event_field, { \
.struct_size = sizeof(struct lttng_ust_event_field), \
.name = #_item, \
- .type = (const struct lttng_ust_type_common *) __LTTNG_COMPOUND_LITERAL(const struct lttng_ust_type_enum, { \
+ .type = (const struct lttng_ust_type_common *) LTTNG_UST_COMPOUND_LITERAL(const struct lttng_ust_type_enum, { \
.parent = { \
.type = lttng_ust_type_enum, \
}, \
.nofilter = 0, \
}),
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__ /* Only one used in this phase */
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
- static const struct lttng_ust_event_field *__event_fields___##_provider##___##_name[] = { \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+ static const struct lttng_ust_event_field * const __event_fields___##_provider##___##_name[] = { \
_fields \
ctf_integer(int, dummy, 0) /* Dummy, C99 forbids 0-len array. */ \
};
* Create probe callback prototypes.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
-static void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args));
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+static void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args));
#include TRACEPOINT_INCLUDE
* Create static inline function that calculates event size.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#define _ctf_integer_ext(_type, _item, _src, _byte_order, _base, _nowrite) \
if (0) \
(void) (_src); /* Unused */ \
- __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
+ __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
__event_len += sizeof(_type);
#undef _ctf_float
#define _ctf_float(_type, _item, _src, _nowrite) \
if (0) \
(void) (_src); /* Unused */ \
- __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
+ __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
__event_len += sizeof(_type);
#undef _ctf_array_encoded
_nowrite, _elem_type_base) \
if (0) \
(void) (_src); /* Unused */ \
- __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
+ __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
__event_len += sizeof(_type) * (_length);
#undef _ctf_sequence_encoded
_src_length, _encoding, _nowrite, _elem_type_base) \
if (0) \
(void) (_src); /* Unused */ \
- __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_length_type)); \
+ __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_length_type)); \
__event_len += sizeof(_length_type); \
- __event_len += lttng_ust_lib_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
+ __event_len += lttng_ust_ring_buffer_align(__event_len, lttng_ust_rb_alignof(_type)); \
__dynamic_len[__dynamic_len_idx] = (_src_length); \
__event_len += sizeof(_type) * __dynamic_len[__dynamic_len_idx]; \
__dynamic_len_idx++;
#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
_ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite)
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
static inline \
-size_t __event_get_size__##_provider##___##_name(size_t *__dynamic_len, _TP_ARGS_DATA_PROTO(_args)) \
+size_t __event_get_size__##_provider##___##_name(size_t *__dynamic_len, LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \
lttng_ust_notrace; \
static inline \
size_t __event_get_size__##_provider##___##_name( \
size_t *__dynamic_len __attribute__((__unused__)), \
- _TP_ARGS_DATA_PROTO(_args)) \
+ LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \
{ \
size_t __event_len = 0; \
unsigned int __dynamic_len_idx __attribute__((__unused__)) = 0; \
* We make both write and nowrite data available to the filter.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#include <lttng/ust-tracepoint-event-nowrite.h>
#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
_ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite)
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
static inline \
void __event_prepare_interpreter_stack__##_provider##___##_name(char *__stack_data,\
- _TP_ARGS_DATA_PROTO(_args)) \
+ LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \
{ \
if (0) { \
(void) __tp_data; /* don't warn if unused */ \
* Create static inline function that calculates event payload alignment.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#define _ctf_enum(_provider, _name, _type, _item, _src, _nowrite) \
_ctf_integer_ext(_type, _item, _src, BYTE_ORDER, 10, _nowrite)
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
static inline \
-size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \
+size_t __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(_args)) \
lttng_ust_notrace; \
static inline \
-size_t __event_get_align__##_provider##___##_name(_TP_ARGS_PROTO(_args)) \
+size_t __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(_args)) \
{ \
size_t __event_align = 1; \
_fields \
* and writes event data into the buffer.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
#include <lttng/ust-tracepoint-event-write.h>
#undef __get_dynamic_len
#define __get_dynamic_len(field) __stackvar.__dynamic_len[__dynamic_len_idx++]
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
-#undef TP_FIELDS
-#define TP_FIELDS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_FIELDS
+#define LTTNG_UST_TP_FIELDS(...) __VA_ARGS__
/*
* For state dump, check that "session" argument (mandatory) matches the
* 2*sizeof(unsigned long) for all supported architectures.
* Perform UNION (||) of filter runtime list.
*/
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
static \
-void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \
+void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \
lttng_ust_notrace; \
static \
-void __event_probe__##_provider##___##_name(_TP_ARGS_DATA_PROTO(_args)) \
+void __event_probe__##_provider##___##_name(LTTNG_UST__TP_ARGS_DATA_PROTO(_args)) \
{ \
struct lttng_ust_event_common *__event = (struct lttng_ust_event_common *) __tp_data; \
size_t __dynamic_len_idx = 0; \
return; \
if (caa_unlikely(CMM_ACCESS_ONCE(__event->eval_filter))) { \
__event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \
- _TP_ARGS_DATA_VAR(_args)); \
+ LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \
__interpreter_stack_prepared = true; \
if (caa_likely(__event->run_filter(__event, \
__stackvar.__interpreter_stack_data, NULL) != LTTNG_UST_EVENT_FILTER_ACCEPT)) \
size_t __event_len, __event_align; \
struct lttng_ust_event_recorder *__event_recorder = (struct lttng_ust_event_recorder *) __event->child; \
struct lttng_ust_channel_buffer *__chan = __event_recorder->chan; \
- struct lttng_ust_lib_ring_buffer_ctx __ctx; \
+ struct lttng_ust_ring_buffer_ctx __ctx; \
\
__event_len = __event_get_size__##_provider##___##_name(__stackvar.__dynamic_len, \
- _TP_ARGS_DATA_VAR(_args)); \
- __event_align = __event_get_align__##_provider##___##_name(_TP_ARGS_VAR(_args)); \
- lttng_ust_lib_ring_buffer_ctx_init(&__ctx, __event_recorder, __event_len, __event_align, \
+ LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \
+ __event_align = __event_get_align__##_provider##___##_name(LTTNG_UST__TP_ARGS_VAR(_args)); \
+ lttng_ust_ring_buffer_ctx_init(&__ctx, __event_recorder, __event_len, __event_align, \
_TP_IP_PARAM(TP_IP_PARAM)); \
__ret = __chan->ops->event_reserve(&__ctx); \
if (__ret < 0) \
\
if (caa_unlikely(!__interpreter_stack_prepared && __notif_ctx.eval_capture)) \
__event_prepare_interpreter_stack__##_provider##___##_name(__stackvar.__interpreter_stack_data, \
- _TP_ARGS_DATA_VAR(_args)); \
+ LTTNG_UST__TP_ARGS_DATA_VAR(_args)); \
\
__event_notifier->notification_send(__event_notifier, \
__stackvar.__interpreter_stack_data, \
* Create probe signature
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef TP_ARGS
-#define TP_ARGS(...) __VA_ARGS__
+#undef LTTNG_UST_TP_ARGS
+#define LTTNG_UST_TP_ARGS(...) __VA_ARGS__
#define _TP_EXTRACT_STRING2(...) #__VA_ARGS__
-#undef _TRACEPOINT_EVENT_CLASS
-#define _TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_CLASS
+#define LTTNG_UST__TRACEPOINT_EVENT_CLASS(_provider, _name, _args, _fields) \
static const char __tp_event_signature___##_provider##___##_name[] = \
_TP_EXTRACT_STRING2(_args);
* the compiler will complain.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
/*
* mangled.
*/
#ifdef __cplusplus
-#define LTTNG_TP_EXTERN_C extern "C"
+#define LTTNG_UST_TP_EXTERN_C extern "C"
#else
-#define LTTNG_TP_EXTERN_C
+#define LTTNG_UST_TP_EXTERN_C
#endif
#undef TRACEPOINT_LOGLEVEL
-#define TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \
-static const int _loglevel_value___##__provider##___##__name = __loglevel; \
-LTTNG_TP_EXTERN_C const int *_loglevel___##__provider##___##__name \
- __attribute__((visibility("hidden"))) = \
+#define TRACEPOINT_LOGLEVEL(__provider, __name, __loglevel) \
+static const int _loglevel_value___##__provider##___##__name = __loglevel; \
+LTTNG_UST_TP_EXTERN_C const int * const _loglevel___##__provider##___##__name \
+ __attribute__((visibility("hidden"))) = \
&_loglevel_value___##__provider##___##__name;
#include TRACEPOINT_INCLUDE
-#undef LTTNG_TP_EXTERN_C
+#undef LTTNG_UST_TP_EXTERN_C
/*
* Stage 6.1 of tracepoint event generation.
* Tracepoint UML URI info.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
/*
* mangled.
*/
#ifdef __cplusplus
-#define LTTNG_TP_EXTERN_C extern "C"
+#define LTTNG_UST_TP_EXTERN_C extern "C"
#else
-#define LTTNG_TP_EXTERN_C
+#define LTTNG_UST_TP_EXTERN_C
#endif
#undef TRACEPOINT_MODEL_EMF_URI
#define TRACEPOINT_MODEL_EMF_URI(__provider, __name, __uri) \
-LTTNG_TP_EXTERN_C const char *_model_emf_uri___##__provider##___##__name \
+LTTNG_UST_TP_EXTERN_C const char * const _model_emf_uri___##__provider##___##__name \
__attribute__((visibility("hidden"))) = __uri; \
#include TRACEPOINT_INCLUDE
-#undef LTTNG_TP_EXTERN_C
+#undef LTTNG_UST_TP_EXTERN_C
/*
* Stage 7.0 of tracepoint event generation.
* symbol table.
*/
-extern const struct lttng_ust_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER)
+extern const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER)
__attribute__((visibility("hidden")));
/*
* Stage 7.1 of tracepoint event generation.
*
* Create events description structures. We use a weakref because
- * loglevels are optional. If not declared, the event will point to the
+ * loglevels are optional. If not declared, the event will point to
* a loglevel that contains NULL.
+ *
+ * C++ requires that const objects have a user-declared default
+ * constructor. However, in both C++ and C, weakref cannot be
+ * initialized because it causes the weakref attribute to be ignored.
+ * Therefore, the loglevel and model_emf_uri pointers are not const
+ * to ensure C++ compilers default-initialize them.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef _TRACEPOINT_EVENT_INSTANCE
-#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
static const int * \
__ref_loglevel___##_provider##___##_name \
__attribute__((weakref ("_loglevel___" #_provider "___" #_name))); \
* Create array of events.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
-#undef _TRACEPOINT_EVENT_INSTANCE
-#define _TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
+#undef LTTNG_UST__TRACEPOINT_EVENT_INSTANCE
+#define LTTNG_UST__TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, _args) \
&__event_desc___##_provider##_##_name,
-static const struct lttng_ust_event_desc *_TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = {
+static const struct lttng_ust_event_desc * const LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)[] = {
#include TRACEPOINT_INCLUDE
NULL, /* Dummy, C99 forbids 0-len array. */
};
* Create a toplevel descriptor for the whole probe.
*/
-const struct lttng_ust_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) = {
+const struct lttng_ust_probe_desc LTTNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER) = {
.struct_size = sizeof(struct lttng_ust_probe_desc),
.provider_name = __tp_stringify(TRACEPOINT_PROVIDER),
- .event_desc = _TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER),
- .nr_events = _TP_ARRAY_SIZE(_TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)) - 1,
+ .event_desc = LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER),
+ .nr_events = _TP_ARRAY_SIZE(LTTNG_UST__TP_COMBINE_TOKENS(__event_desc___, TRACEPOINT_PROVIDER)) - 1,
.major = LTTNG_UST_PROVIDER_MAJOR,
.minor = LTTNG_UST_PROVIDER_MINOR,
};
-static int _TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER);
-static struct lttng_ust_registered_probe *_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER);
+static int LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER);
+static struct lttng_ust_registered_probe *LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER);
/*
* Stage 9 of tracepoint event generation.
* Register refcount is protected by libc dynamic loader mutex.
*/
-/* Reset all macros within TRACEPOINT_EVENT */
+/* Reset all macros within LTTNG_UST_TRACEPOINT_EVENT */
#include <lttng/ust-tracepoint-event-reset.h>
static void
-_TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void)
+LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void)
lttng_ust_notrace __attribute__((constructor));
static void
-_TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void)
+LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_init__, TRACEPOINT_PROVIDER)(void)
{
struct lttng_ust_registered_probe *reg_probe;
- if (_TP_COMBINE_TOKENS(__probe_register_refcount___,
+ if (LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___,
TRACEPOINT_PROVIDER)++) {
return;
}
/*
- * __tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a
+ * lttng_ust_tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a
* static inline function that ensures every probe PROVIDER
* argument match the provider within which they appear. It
* calls empty static inline functions, and therefore has no
* runtime effect. However, if it detects an error, a linker
* error will appear.
*/
- _TP_COMBINE_TOKENS(__tracepoint_provider_check_, TRACEPOINT_PROVIDER)();
- assert(!_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER));
- reg_probe = lttng_ust_probe_register(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER));
+ LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_check_, TRACEPOINT_PROVIDER)();
+ assert(!LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER));
+ reg_probe = lttng_ust_probe_register(<TNG_UST__TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER));
if (!reg_probe) {
fprintf(stderr, "LTTng-UST: Error while registering tracepoint probe.\n");
abort();
}
- _TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = reg_probe;
+ LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = reg_probe;
}
static void
-_TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void)
+LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void)
lttng_ust_notrace __attribute__((destructor));
static void
-_TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void)
+LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_events_exit__, TRACEPOINT_PROVIDER)(void)
{
- if (--_TP_COMBINE_TOKENS(__probe_register_refcount___,
+ if (--LTTNG_UST__TP_COMBINE_TOKENS(__probe_register_refcount___,
TRACEPOINT_PROVIDER)) {
return;
}
- lttng_ust_probe_unregister(_TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER));
- _TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = NULL;
+ lttng_ust_probe_unregister(LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER));
+ LTTNG_UST__TP_COMBINE_TOKENS(__lttng_ust_probe_register_cookie___, TRACEPOINT_PROVIDER) = NULL;
}
-int _TP_COMBINE_TOKENS(__tracepoint_provider_, TRACEPOINT_PROVIDER)
+int LTTNG_UST__TP_COMBINE_TOKENS(lttng_ust_tracepoint_provider_, TRACEPOINT_PROVIDER)
__attribute__((visibility("default")));