1

代码是:

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

4

0 回答 0