X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=include%2Flttng%2Ftracepoint.h;h=045046af0e5afc2b86bff6853af12f302fdd002f;hb=9b34a2b2a6f473b198b8472591717519d9a8c59b;hp=be18e94c7823211b55b94b36fdca70bc97b7774e;hpb=9b14815a9ee98c0dbc842a1e545cd6a82ae7b18a;p=lttng-ust.git diff --git a/include/lttng/tracepoint.h b/include/lttng/tracepoint.h index be18e94c..045046af 100644 --- a/include/lttng/tracepoint.h +++ b/include/lttng/tracepoint.h @@ -182,7 +182,8 @@ extern "C" { * 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; \ @@ -215,7 +216,7 @@ static inline \ 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 \ @@ -226,12 +227,12 @@ 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, +extern 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, +extern int lttng_ust_tracepoint_provider_unregister(const char *provider_name, const char *event_name, void (*func)(void), void *data); /* @@ -482,7 +483,8 @@ extern struct lttng_ust_tracepoint * const __stop_lttng_ust_tracepoints_ptrs[] #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; \ @@ -490,7 +492,8 @@ extern struct lttng_ust_tracepoint * const __stop_lttng_ust_tracepoints_ptrs[] __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, \ @@ -596,6 +599,39 @@ lttng_ust__tracepoints__ptrs_destroy(void) /* The following declarations must be outside re-inclusion protection. */ +/* + * 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 /*