Fix: tests: invoke destroy APIs for queues/stacks
[urcu.git] / urcu / tls-compat.h
index 601336b0db6599312bf4277a668f129c8e7c1645..8ac1ea0615ddc2eb91ee51e9e15b89bd094d4c81 100644 (file)
@@ -44,7 +44,7 @@ extern "C" {
  *     typedef int my_int_array_type[4];
  *     DEFINE_URCU_TLS(my_int_array_type, var_name);
  *
- * Another exmaple:
+ * Another example:
  *     typedef void (*call_rcu_flavor)(struct rcu_head *, XXXX);
  *     DECLARE_URCU_TLS(call_rcu_flavor, p_call_rcu);
  *
@@ -74,6 +74,10 @@ extern "C" {
 
 #else /* #ifndef CONFIG_RCU_TLS */
 
+/*
+ * The *_1() macros ensure macro parameters are expanded.
+ */
+
 # include <pthread.h>
 
 struct urcu_tls {
@@ -82,14 +86,16 @@ struct urcu_tls {
        int init_done;
 };
 
-# define DECLARE_URCU_TLS(type, name)                          \
+# define DECLARE_URCU_TLS_1(type, name)                                \
        type *__tls_access_ ## name(void)
+# define DECLARE_URCU_TLS(type, name)                          \
+       DECLARE_URCU_TLS_1(type, name)
 
 /*
  * Note: we don't free memory at process exit, since it will be dealt
  * with by the OS.
  */
-# define DEFINE_URCU_TLS(type, name)                           \
+# define DEFINE_URCU_TLS_1(type, name)                         \
        type *__tls_access_ ## name(void)                       \
        {                                                       \
                static struct urcu_tls __tls_ ## name = {       \
@@ -118,7 +124,12 @@ struct urcu_tls {
                return __tls_p;                                 \
        }
 
-# define URCU_TLS(name)                (*__tls_access_ ## name())
+# define DEFINE_URCU_TLS(type, name)                           \
+       DEFINE_URCU_TLS_1(type, name)
+
+# define URCU_TLS_1(name)      (*__tls_access_ ## name())
+
+# define URCU_TLS(name)                URCU_TLS_1(name)
 
 #endif /* #else #ifndef CONFIG_RCU_TLS */
 
This page took 0.023023 seconds and 4 git commands to generate.