smp_wmb()的功能是否可以防止编译器和CPU重新排序指令?

时间:2013-11-03 07:07:27

标签: data-structures linux-kernel kernel rcu

代码是:

 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的重新排序?

0 个答案:

没有答案