X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=src%2Furcu-utils.h;h=eab6212dd61539651aaded7ad747874a6e9d1d92;hp=1d91bc92be24f7906547db2bc561150b45f17edd;hb=99bfa9e9e88b273c5a3134eafb9c31938f3af7d6;hpb=4477a87021ffbfbfdb2a2084d05a084171343d36 diff --git a/src/urcu-utils.h b/src/urcu-utils.h index 1d91bc9..eab6212 100644 --- a/src/urcu-utils.h +++ b/src/urcu-utils.h @@ -26,4 +26,25 @@ #define urcu_stringify(a) _urcu_stringify(a) #define _urcu_stringify(a) #a +/* There is no concept of symbol aliases on MacOS */ +#ifdef __APPLE__ +#define URCU_ATTR_ALIAS(x) +#else +#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 */