* Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*/
-#ifndef _LTTNG_TRACEPOINT_H
-#define _LTTNG_TRACEPOINT_H
+#ifndef _LTTNG_UST_TRACEPOINT_H
+#define _LTTNG_UST_TRACEPOINT_H
#include <stdio.h>
#include <stdlib.h>
* address.
*/
#define LTTNG_UST__DECLARE_TRACEPOINT(_provider, _name, ...) \
-extern struct lttng_ust_tracepoint lttng_ust_tracepoint_##_provider##___##_name; \
+extern struct lttng_ust_tracepoint lttng_ust_tracepoint_##_provider##___##_name \
+ LTTNG_UST__TRACEPOINT_DEFINITION_VISIBILITY; \
static inline \
void lttng_ust_tracepoint_cb_##_provider##___##_name(LTTNG_UST__TP_ARGS_PROTO(__VA_ARGS__)) \
__attribute__((always_inline, unused)) lttng_ust_notrace; \
{ \
struct lttng_ust_tracepoint_probe *__tp_probe; \
\
- if (caa_unlikely(!TP_RCU_LINK_TEST())) \
+ if (caa_unlikely(!LTTNG_UST_TP_RCU_LINK_TEST())) \
return; \
- tp_rcu_read_lock(); \
- __tp_probe = tp_rcu_dereference(lttng_ust_tracepoint_##_provider##___##_name.probes); \
+ lttng_ust_tp_rcu_read_lock(); \
+ __tp_probe = lttng_ust_tp_rcu_dereference(lttng_ust_tracepoint_##_provider##___##_name.probes); \
if (caa_unlikely(!__tp_probe)) \
goto end; \
do { \
(LTTNG_UST__TP_ARGS_DATA_VAR(__VA_ARGS__)); \
} while ((++__tp_probe)->func); \
end: \
- tp_rcu_read_unlock(); \
+ lttng_ust_tp_rcu_read_unlock(); \
} \
static inline \
void lttng_ust_tracepoint_register_##_provider##___##_name(char *provider_name, char *event_name, \
void lttng_ust_tracepoint_register_##_provider##___##_name(char *provider_name, char *event_name, \
void (*func)(void), void *data) \
{ \
- lttng_ust_tracepoint_probe_register(provider_name, event_name, func, data, \
+ lttng_ust_tracepoint_provider_register(provider_name, event_name, func, data, \
lttng_ust_tracepoint_##_provider##___##_name.signature); \
} \
static inline \
void lttng_ust_tracepoint_unregister_##_provider##___##_name(char *provider_name, char *event_name, \
void (*func)(void), void *data) \
{ \
- lttng_ust_tracepoint_probe_unregister(provider_name, event_name, func, data); \
+ lttng_ust_tracepoint_provider_unregister(provider_name, event_name, func, data); \
}
-extern int lttng_ust_tracepoint_probe_register(const char *provider_name, const char *event_name,
+/*
+ * Registration of tracepoint provider probe functions with
+ * lttng_ust_tracepoint_provider_register, unregistration with
+ * lttng_ust_tracepoint_provider_unregister.
+ */
+int lttng_ust_tracepoint_provider_register(const char *provider_name, const char *event_name,
void (*func)(void), void *data, const char *signature);
-extern int lttng_ust_tracepoint_probe_unregister(const char *provider_name, const char *event_name,
+int lttng_ust_tracepoint_provider_unregister(const char *provider_name, const char *event_name,
void (*func)(void), void *data);
+/*
+ * Registration of tracepoint instrumentation modules with lttng_ust_tracepoint_module_register,
+ * unregistration with lttng_ust_tracepoint_module_unregister.
+ */
+int lttng_ust_tracepoint_module_register(struct lttng_ust_tracepoint * const *tracepoints_start,
+ int tracepoints_count);
+int lttng_ust_tracepoint_module_unregister(struct lttng_ust_tracepoint * const *tracepoints_start);
+
/*
* tracepoint dynamic linkage handling (callbacks). Hidden visibility:
* shared across objects in a module/main executable.
void *liblttngust_handle;
- int (*lttng_ust_tracepoint_register_lib)(struct lttng_ust_tracepoint * const *tracepoints_start,
+ int (*lttng_ust_tracepoint_module_register)(struct lttng_ust_tracepoint * const *tracepoints_start,
int tracepoints_count);
- int (*lttng_ust_tracepoint_unregister_lib)(struct lttng_ust_tracepoint * const *tracepoints_start);
+ int (*lttng_ust_tracepoint_module_unregister)(struct lttng_ust_tracepoint * const *tracepoints_start);
void (*rcu_read_lock_sym)(void);
void (*rcu_read_unlock_sym)(void);
void *(*rcu_dereference_sym)(void *p);
lttng_ust_tracepoint_dlopen_ptr->rcu_read_lock_sym =
URCU_FORCE_CAST(void (*)(void),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "tp_rcu_read_lock"));
+ "lttng_ust_tp_rcu_read_lock"));
if (!lttng_ust_tracepoint_dlopen_ptr->rcu_read_unlock_sym)
lttng_ust_tracepoint_dlopen_ptr->rcu_read_unlock_sym =
URCU_FORCE_CAST(void (*)(void),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "tp_rcu_read_unlock"));
+ "lttng_ust_tp_rcu_read_unlock"));
if (!lttng_ust_tracepoint_dlopen_ptr->rcu_dereference_sym)
lttng_ust_tracepoint_dlopen_ptr->rcu_dereference_sym =
URCU_FORCE_CAST(void *(*)(void *p),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "tp_rcu_dereference_sym"));
+ "lttng_ust_tp_rcu_dereference_sym"));
}
#else
static inline void
#define LTTNG_UST__DEFINE_TRACEPOINT(_provider, _name, _args) \
lttng_ust_tracepoint_validate_name_len(_provider, _name); \
- extern int lttng_ust_tracepoint_provider_##_provider; \
+ extern int lttng_ust_tracepoint_provider_##_provider \
+ LTTNG_UST__TRACEPOINT_PROVIDER_DEFINITION_VISIBILITY; \
static const char lttng_ust_tp_provider_strtab_##_provider##___##_name[] \
__attribute__((section("lttng_ust_tracepoints_strings"))) = \
#_provider; \
__attribute__((section("lttng_ust_tracepoints_strings"))) = \
#_name; \
struct lttng_ust_tracepoint lttng_ust_tracepoint_##_provider##___##_name \
- __attribute__((section("lttng_ust_tracepoints"))) = { \
+ __attribute__((section("lttng_ust_tracepoints"))) \
+ LTTNG_UST__TRACEPOINT_DEFINITION_VISIBILITY = { \
sizeof(struct lttng_ust_tracepoint), \
lttng_ust_tp_provider_strtab_##_provider##___##_name, \
lttng_ust_tp_name_strtab_##_provider##___##_name, \
return;
if (!lttng_ust_tracepoint_destructors_syms_ptr)
lttng_ust_tracepoint_destructors_syms_ptr = <tng_ust_tracepoint_destructors_syms;
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib =
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register =
URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *, int),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "lttng_ust_tracepoint_register_lib"));
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib =
+ "lttng_ust_tracepoint_module_register"));
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister =
URCU_FORCE_CAST(int (*)(struct lttng_ust_tracepoint * const *),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
- "lttng_ust_tracepoint_unregister_lib"));
+ "lttng_ust_tracepoint_module_unregister"));
lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_disable_destructors =
URCU_FORCE_CAST(void (*)(void),
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
dlsym(lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle,
"lttng_ust_tp_get_destructors_state"));
lttng_ust_tracepoint__init_urcu_sym();
- if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib) {
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_register_lib(__start_lttng_ust_tracepoints_ptrs,
+ if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register) {
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_register(__start_lttng_ust_tracepoints_ptrs,
__stop_lttng_ust_tracepoints_ptrs -
__start_lttng_ust_tracepoints_ptrs);
}
lttng_ust_tracepoint_dlopen_ptr = <tng_ust_tracepoint_dlopen;
if (!lttng_ust_tracepoint_destructors_syms_ptr)
lttng_ust_tracepoint_destructors_syms_ptr = <tng_ust_tracepoint_destructors_syms;
- if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib)
- lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_unregister_lib(__start_lttng_ust_tracepoints_ptrs);
+ if (lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister)
+ lttng_ust_tracepoint_dlopen_ptr->lttng_ust_tracepoint_module_unregister(__start_lttng_ust_tracepoints_ptrs);
if (lttng_ust_tracepoint_dlopen_ptr->liblttngust_handle
&& lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state
&& lttng_ust_tracepoint_destructors_syms_ptr->tracepoint_get_destructors_state()
#define do_tracepoint lttng_ust_do_tracepoint
#define tracepoint_enabled lttng_ust_tracepoint_enabled
#define TP_ARGS LTTNG_UST_TP_ARGS
-#define TP_FIELDS LTTNG_UST_TP_FIELDS
#endif /* #if LTTNG_UST_COMPAT_API(0) */
#ifdef __cplusplus
}
#endif
-#endif /* _LTTNG_TRACEPOINT_H */
+#endif /* _LTTNG_UST_TRACEPOINT_H */
/* The following declarations must be outside re-inclusion protection. */
-#ifndef TRACEPOINT_ENUM
+/*
+ * LTTNG_UST_TRACEPOINT_HIDDEN_DEFINITION: Define this before including
+ * a tracepoint instrumentation header to hide symbols associated with
+ * tracepoint module instrumentation. This is useful if all compile
+ * units using the lttng_ust_tracepoint(),
+ * lttng_ust_tracepoint_enabled() and lttng_ust_do_tracepoint() macros
+ * is within the same module as the compile unit including the
+ * tracepoint header after defining LTTNG_UST_TRACEPOINT_DEFINE.
+ */
+
+#undef LTTNG_UST__TRACEPOINT_DEFINITION_VISIBILITY
+#ifdef LTTNG_UST_TRACEPOINT_HIDDEN_DEFINITION
+#define LTTNG_UST__TRACEPOINT_DEFINITION_VISIBILITY __attribute__((visibility("hidden")))
+#else
+#define LTTNG_UST__TRACEPOINT_DEFINITION_VISIBILITY __attribute__((visibility("default")))
+#endif
+
+/*
+ * LTTNG_UST_TRACEPOINT_PROVIDER_HIDDEN_DEFINITION: Define this before
+ * including a tracepoint instrumentation header to hide symbols
+ * associated with the tracepoint provider. This is useful if the
+ * tracepoint definition (including the header after defining
+ * LTTNG_UST_TRACEPOINT_DEFINE) is in the same module as the provider
+ * (including the header after defining
+ * LTTNG_UST_TRACEPOINT_CREATE_PROBES).
+ */
+#undef LTTNG_UST__TRACEPOINT_PROVIDER_DEFINITION_VISIBILITY
+#ifdef LTTNG_UST_TRACEPOINT_PROVIDER_HIDDEN_DEFINITION
+#define LTTNG_UST__TRACEPOINT_PROVIDER_DEFINITION_VISIBILITY __attribute__((visibility("hidden")))
+#else
+#define LTTNG_UST__TRACEPOINT_PROVIDER_DEFINITION_VISIBILITY __attribute__((visibility("default")))
+#endif
+
+#ifndef LTTNG_UST_TRACEPOINT_ENUM
/*
* Tracepoint Enumerations
*
* An example:
*
- * TRACEPOINT_ENUM(someproject_component, enumname,
- * TP_ENUM_VALUES(
- * ctf_enum_value("even", 0)
- * ctf_enum_value("uneven", 1)
- * ctf_enum_range("twoto4", 2, 4)
- * ctf_enum_value("five", 5)
+ * LTTNG_UST_TRACEPOINT_ENUM(someproject_component, enumname,
+ * LTTNG_UST_TP_ENUM_VALUES(
+ * lttng_ust_field_enum_value("even", 0)
+ * lttng_ust_field_enum_value("uneven", 1)
+ * lttng_ust_field_enum_range("twoto4", 2, 4)
+ * lttng_ust_field_enum_value("five", 5)
* )
* )
*
* Where "someproject_component" is the name of the component this enumeration
* belongs to and "enumname" identifies this enumeration. Inside the
- * TP_ENUM_VALUES macro is the actual mapping. Each string value can map
- * to either a single value with ctf_enum_value or a range of values
- * with ctf_enum_range.
+ * LTTNG_UST_TP_ENUM_VALUES macro is the actual mapping. Each string value can map
+ * to either a single value with lttng_ust_field_enum_value or a range of values
+ * with lttng_ust_field_enum_range.
*
* Enumeration ranges may overlap, but the behavior is implementation-defined,
* each trace reader will handle overlapping as it wishes.
* That enumeration can then be used in a field inside the TP_FIELD macro using
* the following line:
*
- * ctf_enum(someproject_component, enumname, enumtype, enumfield, enumval)
+ * lttng_ust_field_enum(someproject_component, enumname, enumtype, enumfield, enumval)
*
* Where "someproject_component" and "enumname" match those in the
- * TRACEPOINT_ENUM, "enumtype" is a signed or unsigned integer type
+ * LTTNG_UST_TRACEPOINT_ENUM, "enumtype" is a signed or unsigned integer type
* backing the enumeration, "enumfield" is the name of the field and
* "enumval" is the value.
*/
-#define TRACEPOINT_ENUM(provider, name, values)
+#define LTTNG_UST_TRACEPOINT_ENUM(provider, name, values)
-#endif /* #ifndef TRACEPOINT_ENUM */
+#if LTTNG_UST_COMPAT_API(0)
+#define TRACEPOINT_ENUM LTTNG_UST_TRACEPOINT_ENUM
+#endif /* #if LTTNG_UST_COMPAT_API(0) */
+
+#endif /* #ifndef LTTNG_UST_TRACEPOINT_ENUM */
#ifndef LTTNG_UST_TRACEPOINT_EVENT
*
* LTTNG_UST_TP_FIELDS(
* * Integer, printed in base 10 *
- * ctf_integer(int, field_a, arg0)
+ * lttng_ust_field_integer(int, field_a, arg0)
*
* * Integer, printed with 0x base 16 *
- * ctf_integer_hex(unsigned long, field_d, arg1)
+ * lttng_ust_field_integer_hex(unsigned long, field_d, arg1)
*
* * Enumeration *
- * ctf_enum(someproject_component, enum_name, int, field_e, arg0)
+ * lttng_ust_field_enum(someproject_component, enum_name, int, field_e, arg0)
*
* * Array Sequence, printed as UTF8-encoded array of bytes *
- * ctf_array_text(char, field_b, string, FIXED_LEN)
- * ctf_sequence_text(char, field_c, string, size_t, strlen)
+ * lttng_ust_field_array_text(char, field_b, string, FIXED_LEN)
+ * lttng_ust_field_sequence_text(char, field_c, string, size_t, strlen)
*
* * String, printed as UTF8-encoded string *
- * ctf_string(field_e, string)
+ * lttng_ust_field_string(field_e, string)
*
* * Array sequence of signed integer values *
- * ctf_array(long, field_f, arg4, FIXED_LEN4)
- * ctf_sequence(long, field_g, arg4, size_t, arg4_len)
+ * lttng_ust_field_array(long, field_f, arg4, FIXED_LEN4)
+ * lttng_ust_field_sequence(long, field_g, arg4, size_t, arg4_len)
* )
* )
*
#define LTTNG_UST_TRACEPOINT_EVENT_CLASS(provider, name, args, fields)
-#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(provider, _template, name, args) \
+#define LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(template_provider, template_name, provider, name, args) \
LTTNG_UST__DECLARE_TRACEPOINT(provider, name, LTTNG_UST__TP_PARAMS(args)) \
LTTNG_UST__DEFINE_TRACEPOINT(provider, name, LTTNG_UST__TP_PARAMS(args))
#if LTTNG_UST_COMPAT_API(0)
#define TRACEPOINT_EVENT LTTNG_UST_TRACEPOINT_EVENT
#define TRACEPOINT_EVENT_CLASS LTTNG_UST_TRACEPOINT_EVENT_CLASS
-#define TRACEPOINT_EVENT_INSTANCE LTTNG_UST_TRACEPOINT_EVENT_INSTANCE
+#define TRACEPOINT_EVENT_INSTANCE(_provider, _template, _name, args) \
+ LTTNG_UST_TRACEPOINT_EVENT_INSTANCE(_provider, _template, \
+ _provider, _name, LTTNG_UST__TP_PARAMS(args))
+
#endif /* #if LTTNG_UST_COMPAT_API(0) */
#endif /* #ifndef LTTNG_UST_TRACEPOINT_EVENT */
-#ifndef TRACEPOINT_LOGLEVEL
+#ifndef LTTNG_UST_TRACEPOINT_LOGLEVEL
/*
* Tracepoint Loglevels
* semantic. Loglevels 7 through 13 offer more fine-grained selection of
* debug information.
*
- * TRACE_EMERG 0
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG 0
* system is unusable
*
- * TRACE_ALERT 1
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT 1
* action must be taken immediately
*
- * TRACE_CRIT 2
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT 2
* critical conditions
*
- * TRACE_ERR 3
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR 3
* error conditions
*
- * TRACE_WARNING 4
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING 4
* warning conditions
*
- * TRACE_NOTICE 5
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE 5
* normal, but significant, condition
*
- * TRACE_INFO 6
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO 6
* informational message
*
- * TRACE_DEBUG_SYSTEM 7
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM 7
* debug information with system-level scope (set of programs)
*
- * TRACE_DEBUG_PROGRAM 8
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM 8
* debug information with program-level scope (set of processes)
*
- * TRACE_DEBUG_PROCESS 9
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS 9
* debug information with process-level scope (set of modules)
*
- * TRACE_DEBUG_MODULE 10
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE 10
* debug information with module (executable/library) scope (set of units)
*
- * TRACE_DEBUG_UNIT 11
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT 11
* debug information with compilation unit scope (set of functions)
*
- * TRACE_DEBUG_FUNCTION 12
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION 12
* debug information with function-level scope
*
- * TRACE_DEBUG_LINE 13
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE 13
* debug information with line-level scope (LTTNG_UST_TRACEPOINT_EVENT default)
*
- * TRACE_DEBUG 14
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG 14
* debug-level message
*
* Declare tracepoint loglevels for tracepoints. A LTTNG_UST_TRACEPOINT_EVENT
- * should be declared prior to the the TRACEPOINT_LOGLEVEL for a given
+ * should be declared prior to the the LTTNG_UST_TRACEPOINT_LOGLEVEL for a given
* tracepoint name. The first field is the provider name, the second
* field is the name of the tracepoint, the third field is the loglevel
* name.
*
- * TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >, < event >,
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL(< [com_company_]project[_component] >, < event >,
* < loglevel_name >)
*
- * The TRACEPOINT_PROVIDER must be already declared before declaring a
- * TRACEPOINT_LOGLEVEL.
+ * The LTTNG_UST_TRACEPOINT_PROVIDER must be already declared before declaring a
+ * LTTNG_UST_TRACEPOINT_LOGLEVEL.
*/
enum {
- TRACE_EMERG = 0,
- TRACE_ALERT = 1,
- TRACE_CRIT = 2,
- TRACE_ERR = 3,
- TRACE_WARNING = 4,
- TRACE_NOTICE = 5,
- TRACE_INFO = 6,
- TRACE_DEBUG_SYSTEM = 7,
- TRACE_DEBUG_PROGRAM = 8,
- TRACE_DEBUG_PROCESS = 9,
- TRACE_DEBUG_MODULE = 10,
- TRACE_DEBUG_UNIT = 11,
- TRACE_DEBUG_FUNCTION = 12,
- TRACE_DEBUG_LINE = 13,
- TRACE_DEBUG = 14,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG = 0,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT = 1,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT = 2,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR = 3,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING = 4,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE = 5,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO = 6,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM = 7,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM = 8,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS = 9,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE = 10,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT = 11,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION = 12,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE = 13,
+ LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG = 14,
};
-#define TRACEPOINT_LOGLEVEL(provider, name, loglevel)
+#define LTTNG_UST_TRACEPOINT_LOGLEVEL(provider, name, loglevel)
-#endif /* #ifndef TRACEPOINT_LOGLEVEL */
+#if LTTNG_UST_COMPAT_API(0)
+#define TRACEPOINT_LOGLEVEL LTTNG_UST_TRACEPOINT_LOGLEVEL
+
+#define TRACE_EMERG LTTNG_UST_TRACEPOINT_LOGLEVEL_EMERG
+#define TRACE_ALERT LTTNG_UST_TRACEPOINT_LOGLEVEL_ALERT
+#define TRACE_CRIT LTTNG_UST_TRACEPOINT_LOGLEVEL_CRIT
+#define TRACE_ERR LTTNG_UST_TRACEPOINT_LOGLEVEL_ERR
+#define TRACE_WARNING LTTNG_UST_TRACEPOINT_LOGLEVEL_WARNING
+#define TRACE_NOTICE LTTNG_UST_TRACEPOINT_LOGLEVEL_NOTICE
+#define TRACE_INFO LTTNG_UST_TRACEPOINT_LOGLEVEL_INFO
+#define TRACE_DEBUG_SYSTEM LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_SYSTEM
+#define TRACE_DEBUG_PROGRAM LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROGRAM
+#define TRACE_DEBUG_PROCESS LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_PROCESS
+#define TRACE_DEBUG_MODULE LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_MODULE
+#define TRACE_DEBUG_UNIT LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_UNIT
+#define TRACE_DEBUG_FUNCTION LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_FUNCTION
+#define TRACE_DEBUG_LINE LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG_LINE
+#define TRACE_DEBUG LTTNG_UST_TRACEPOINT_LOGLEVEL_DEBUG
+#endif
+
+#endif /* #ifndef LTTNG_UST_TRACEPOINT_LOGLEVEL */
-#ifndef TRACEPOINT_MODEL_EMF_URI
+#ifndef LTTNG_UST_TRACEPOINT_MODEL_EMF_URI
-#define TRACEPOINT_MODEL_EMF_URI(provider, name, uri)
+#define LTTNG_UST_TRACEPOINT_MODEL_EMF_URI(provider, name, uri)
+
+#if LTTNG_UST_COMPAT_API(0)
+#define TRACEPOINT_MODEL_EMF_URI LTTNG_UST_TRACEPOINT_MODEL_EMF_URI
+#endif
-#endif /* #ifndef TRACEPOINT_MODEL_EMF_URI */
+#endif /* #ifndef LTTNG_UST_TRACEPOINT_MODEL_EMF_URI */