X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=wrapper%2Fcompiler.h;h=b9f8c51861e7c20da983777eafde536a3f185312;hb=57ccbfa6a8a79c7b84394c2097efaf7935607aa5;hp=1496f33e3807821fd19ac72e76e7bf35aacacd1f;hpb=52563d02a9234215b62c5f519aa1b5d8589ccd0a;p=lttng-modules.git diff --git a/wrapper/compiler.h b/wrapper/compiler.h index 1496f33e..b9f8c518 100644 --- a/wrapper/compiler.h +++ b/wrapper/compiler.h @@ -9,6 +9,7 @@ #define _LTTNG_WRAPPER_COMPILER_H #include +#include /* * Don't allow compiling with buggy compiler. @@ -39,4 +40,21 @@ # define WRITE_ONCE(x, val) ({ ACCESS_ONCE(x) = val; }) #endif +/* + * In v4.15 a smp read barrier was added to READ_ONCE to replace + * lockless_dereference(), replicate this behavior on prior kernels + * and remove calls to smp_read_barrier_depends which was dropped + * in v5.9. + */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) +#define LTTNG_READ_ONCE(x) READ_ONCE(x) +#else +#define LTTNG_READ_ONCE(x) \ +({ \ + typeof(x) __val = READ_ONCE(x); \ + smp_read_barrier_depends(); \ + __val; \ +}) +#endif + #endif /* _LTTNG_WRAPPER_COMPILER_H */