X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=compiler.h;h=717465c4d8570ce443e8cec4bb5b1abe3f3a0765;hp=fb09ca2b9b238ceec418ba5c21c660b4cebcb7fd;hb=2dc5fa0f7cfbfb0a64a7a67b39626650e863f16a;hpb=d8429b11e257939635c5dc4786756effdc38b494 diff --git a/compiler.h b/compiler.h index fb09ca2..717465c 100644 --- a/compiler.h +++ b/compiler.h @@ -25,6 +25,11 @@ * IBM's contributions to this file may be relicensed under LGPLv2 or later. */ +#define likely() __builtin_expect(!!(x), 1) +#define unlikely() __builtin_expect(!!(x), 0) + +#define barrier() asm volatile("" : : : "memory"); + /* * Instruct the compiler to perform only a single access to a variable * (prohibits merging and refetching). The compiler is also forbidden to reorder @@ -37,5 +42,6 @@ * use is to mediate communication between process-level code and irq/NMI * handlers, all running on the same CPU. */ +#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&x) #endif /* _COMPILER_H */