代码是:
static inline void __list_add_rcu(struct list_head * new,
struct list_head * prev, struct list_head * next)
{
new->next = next;
new->prev = prev;
smp_wmb();
next->prev = new;
prev->next = new;
}
#define smp_wmb() wmb()
#ifdef CONFIG_UNORDERED_IO
#define wmb() asm volatile("sfence" ::: "memory")
#else
#define wmb() asm volatile("" ::: "memory")
我知道smp_wmb()的功能可以防止编译器从wiki重新排序指令。
但是RCU有什么方法可以防止CPU的重新排序?