fix: explicitly include urcu/config.h in files using CONFIG_RCU_ defines
[urcu.git] / src / urcu-utils.h
index 3c3c7a166198a20026f3f6e303215c6111415aac..69e37bd3dcbabbaf5cd07348fbf387e4a68f9858 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <urcu/config.h>
+
 #define urcu_stringify(a) _urcu_stringify(a)
 #define _urcu_stringify(a) #a
 
+#define max_t(type, x, y)                              \
+       ({                                              \
+               type __max1 = (x);                      \
+               type __max2 = (y);                      \
+               __max1 > __max2 ? __max1: __max2;       \
+       })
+
+#define min_t(type, x, y)                              \
+       ({                                              \
+               type __min1 = (x);                      \
+               type __min2 = (y);                      \
+               __min1 <= __min2 ? __min1: __min2;      \
+       })
+
 /* There is no concept of symbol aliases on MacOS */
 #ifdef __APPLE__
 #define URCU_ATTR_ALIAS(x)
 #define URCU_ATTR_ALIAS(x) __attribute__((alias(x)))
 #endif
 
+#ifdef CONFIG_RCU_TLS
+#define DEFINE_URCU_TLS_ALIAS_1(type, name, alias)             \
+       URCU_ATTR_ALIAS(#name)                                  \
+       extern type alias
+
+#else
+#define DEFINE_URCU_TLS_ALIAS_1(type, name, alias)             \
+       URCU_ATTR_ALIAS("*__tls_access_" #name)                 \
+       type *__tls_access_ ## alias()
+#endif
+
+#define DEFINE_URCU_TLS_ALIAS(type, name, alias)               \
+       DEFINE_URCU_TLS_ALIAS_1(type, name, alias)
+
 #endif /* _URCU_UTILS_H */
This page took 0.022965 seconds and 4 git commands to generate.