projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: baddr_statedump tracepoint registration
[lttng-ust.git]
/
include
/
lttng
/
ust-tracepoint-event.h
diff --git
a/include/lttng/ust-tracepoint-event.h
b/include/lttng/ust-tracepoint-event.h
index be580307a5b3eda641fbab9414cb614ef9e5b791..eb6b2ea401ff7a48ff385ed443d4a7eb6e7d5426 100644
(file)
--- a/
include/lttng/ust-tracepoint-event.h
+++ b/
include/lttng/ust-tracepoint-event.h
@@
-685,6
+685,8
@@
static struct lttng_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PR
.minor = LTTNG_UST_PROVIDER_MINOR,
};
.minor = LTTNG_UST_PROVIDER_MINOR,
};
+static int _TP_COMBINE_TOKENS(__probe_register_refcount___, TRACEPOINT_PROVIDER);
+
/*
* Stage 9 of tracepoint event generation.
*
/*
* Stage 9 of tracepoint event generation.
*
@@
-692,6
+694,8
@@
static struct lttng_probe_desc _TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PR
*
* Generate the constructor as an externally visible symbol for use when
* linking the probe statically.
*
* Generate the constructor as an externally visible symbol for use when
* linking the probe statically.
+ *
+ * Register refcount is protected by libc dynamic loader mutex.
*/
/* Reset all macros within TRACEPOINT_EVENT */
*/
/* Reset all macros within TRACEPOINT_EVENT */
@@
-703,6
+707,10
@@
_TP_COMBINE_TOKENS(__lttng_events_init__, TRACEPOINT_PROVIDER)(void)
{
int ret;
{
int ret;
+ if (_TP_COMBINE_TOKENS(__probe_register_refcount___,
+ TRACEPOINT_PROVIDER)++) {
+ return;
+ }
/*
* __tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a
* static inline function that ensures every probe PROVIDER
/*
* __tracepoint_provider_check_ ## TRACEPOINT_PROVIDER() is a
* static inline function that ensures every probe PROVIDER
@@
-724,6
+732,10
@@
_TP_COMBINE_TOKENS(__lttng_events_exit__, TRACEPOINT_PROVIDER)(void);
static void
_TP_COMBINE_TOKENS(__lttng_events_exit__, TRACEPOINT_PROVIDER)(void)
{
static void
_TP_COMBINE_TOKENS(__lttng_events_exit__, TRACEPOINT_PROVIDER)(void)
{
+ if (--_TP_COMBINE_TOKENS(__probe_register_refcount___,
+ TRACEPOINT_PROVIDER)) {
+ return;
+ }
lttng_probe_unregister(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER));
}
lttng_probe_unregister(&_TP_COMBINE_TOKENS(__probe_desc___, TRACEPOINT_PROVIDER));
}
This page took
0.024671 seconds
and
4
git commands to generate.