compiler.h | compiler.h | |||
---|---|---|---|---|
skipping to change at line 26 | skipping to change at line 26 | |||
* Permission to modify the code and to distribute modified code is granted , | * Permission to modify the code and to distribute modified code is granted , | |||
* provided the above notices are retained, and a notice that the code was | * provided the above notices are retained, and a notice that the code was | |||
* modified is included with the above copyright notice. | * modified is included with the above copyright notice. | |||
*/ | */ | |||
#include <stddef.h> /* for offsetof */ | #include <stddef.h> /* for offsetof */ | |||
#define likely(x) __builtin_expect(!!(x), 1) | #define likely(x) __builtin_expect(!!(x), 1) | |||
#define unlikely(x) __builtin_expect(!!(x), 0) | #define unlikely(x) __builtin_expect(!!(x), 0) | |||
#define barrier() asm volatile("" : : : "memory"); | #define barrier() asm volatile("" : : : "memory") | |||
/* | /* | |||
* Instruct the compiler to perform only a single access to a variable | * Instruct the compiler to perform only a single access to a variable | |||
* (prohibits merging and refetching). The compiler is also forbidden to re order | * (prohibits merging and refetching). The compiler is also forbidden to re order | |||
* successive instances of ACCESS_ONCE(), but only when the compiler is awa re of | * successive instances of ACCESS_ONCE(), but only when the compiler is awa re of | |||
* particular ordering. Compiler ordering can be ensured, for example, by | * particular ordering. Compiler ordering can be ensured, for example, by | |||
* putting two ACCESS_ONCE() in separate C statements. | * putting two ACCESS_ONCE() in separate C statements. | |||
* | * | |||
* This macro does absolutely -nothing- to prevent the CPU from reordering, | * This macro does absolutely -nothing- to prevent the CPU from reordering, | |||
* merging, or refetching absolutely anything at any time. Its main intend ed | * merging, or refetching absolutely anything at any time. Its main intend ed | |||
End of changes. 1 change blocks. | ||||
1 lines changed or deleted | 1 lines changed or added | |||