The namespace contexts introduced in lttng-ust 2.12 require to
initialize TLS variable to nonzero values. However, in !CONFIG_RCU_TLS
(compatibility mode using pthread setspecific), this initialization
does not build.
Use the new DEFINE_URCU_TLS_INIT from liburcu when building
!CONFIG_RCU_TLS to fix this issue. Since this requires a dependency on
a new liburcu version, only !CONFIG_RCU_TLS adds this dependency in the
fix. A followup cleanup patch will use DEFINE_URCU_TLS_INIT as we add
a strict version dependency.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
* We cache the result to ensure we don't stat(2) the proc filesystem on
* each event.
*/
+#ifdef CONFIG_RCU_TLS
static DEFINE_URCU_TLS(ino_t, cached_cgroup_ns) = NS_INO_UNINITIALIZED;
+#else
+static DEFINE_URCU_TLS_INIT(ino_t, cached_cgroup_ns, NS_INO_UNINITIALIZED);
+#endif
static
ino_t get_cgroup_ns(void)
#include "lttng-tracer-core.h"
#include "ns.h"
-
/*
* We cache the result to ensure we don't stat(2) the proc filesystem on
* each event.
*/
+#ifdef CONFIG_RCU_TLS
static DEFINE_URCU_TLS(ino_t, cached_ipc_ns) = NS_INO_UNINITIALIZED;
+#else
+static DEFINE_URCU_TLS_INIT(ino_t, cached_ipc_ns, NS_INO_UNINITIALIZED);
+#endif
static
ino_t get_ipc_ns(void)
#include "lttng-tracer-core.h"
#include "ns.h"
-
/*
* We cache the result to ensure we don't stat(2) the proc filesystem on
* each event.
*/
+#ifdef CONFIG_RCU_TLS
static DEFINE_URCU_TLS(ino_t, cached_net_ns) = NS_INO_UNINITIALIZED;
+#else
+static DEFINE_URCU_TLS_INIT(ino_t, cached_net_ns, NS_INO_UNINITIALIZED);
+#endif
static
ino_t get_net_ns(void)
* We cache the result to ensure we don't stat(2) the proc filesystem on
* each event.
*/
+#ifdef CONFIG_RCU_TLS
static DEFINE_URCU_TLS(ino_t, cached_uts_ns) = NS_INO_UNINITIALIZED;
+#else
+static DEFINE_URCU_TLS_INIT(ino_t, cached_uts_ns, NS_INO_UNINITIALIZED);
+#endif
static
ino_t get_uts_ns(void)