X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=src%2Furcu-utils.h;h=69e37bd3dcbabbaf5cd07348fbf387e4a68f9858;hp=3c3c7a166198a20026f3f6e303215c6111415aac;hb=375db287452ed4ec9e062e6d670d4cc198a8253d;hpb=ce28e67a534dcf0b68ccad2218e5a2e552e6e469 diff --git a/src/urcu-utils.h b/src/urcu-utils.h index 3c3c7a1..69e37bd 100644 --- a/src/urcu-utils.h +++ b/src/urcu-utils.h @@ -23,9 +23,25 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include + #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) @@ -33,4 +49,18 @@ #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 */