它的定义很简单,在 include/linux/compiler.h 的底部:
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
仅从语法上讲,这似乎毫无意义,先取其地址,在通过指针取其值。而实际上不然,
多了一个关键词 volatile,所以它的含义就是强制编译器每次使用 x 都从内存中获取。
它的定义很简单,在 include/linux/compiler.h 的底部:
#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
仅从语法上讲,这似乎毫无意义,先取其地址,在通过指针取其值。而实际上不然,
多了一个关键词 volatile,所以它的含义就是强制编译器每次使用 x 都从内存中获取。