RCU - Make barriers SMP-only
PATCH 1/1 RCU - Make barriers SMP-only
Linus,
This patch makes the barriers used in RCU list macros SMP-only avoiding the unnecessary overhead of atomic operation on UP. Please apply.
Thanks
Dipankar
list.h | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
include/linux/list.h +4 -4
@@ -83,7 +83,7 @@ { new->next = next; new->prev = prev; -wmb (); +smp_wmb (); next->prev = new; prev->next = new; }
@@ -302,11 +302,11 @@*/ #define list_for_each_rcu (pos, head) \ for (pos = (head)->next, prefetch(pos->next); pos != (head); \ - pos = pos->next, ({ read_barrier_depends(); 0;}), prefetch(pos->next)) + pos = pos->next, ({ smp_read_barrier_depends(); 0;}), prefetch(pos->next))#define __list_for_each_rcu (pos, head) \ for (pos = (head)->next; pos != (head); \ - pos = pos->next, ({ read_barrier_depends(); 0;})) + pos = pos->next, ({ smp_read_barrier_depends(); 0;}))/** * list_for_each_safe_rcu - iterate over an rcu-protected list safe
@@ -317,7 +317,7 @@*/ #define list_for_each_safe_rcu (pos, n, head) \ for (pos = (head)->next, n = pos->next; pos != (head); \ - pos = n, ({ read_barrier_depends(); 0;}), n = pos->next) + pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next)#else #warning "don't include kernel headers in userspace"