Skip to contentSkip to conversation

RCU - Make barriers SMP-only

PATCH New Dipankar Sarma 1 participant 1 message Jan 3, 2003

lore
Share & tools
lore
#0 lore raw

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
diff -urN linux-2.5.54-base/include/linux/list.h linux-2.5.54-rcu_barriers/include/linux/list.h
@@ -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"