Может ли функция smp_wmb() предотвратить переупорядочивание инструкций компилятором и процессором?

Коды есть:

 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() может предотвратить переупорядочивание инструкций компилятором из вики.
Но какие способы RCU предотвращают переупорядочение процессором?

0 ответов

Другие вопросы по тегам