aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorakpm@osdl.org <akpm@osdl.org>2005-05-01 11:58:47 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-01 11:58:47 -0400
commitd59dd4620fb8d6422555a9e2b82a707718e68327 (patch)
tree78205657d24efcaa3f8314064951ac3814ed95a7 /lib
parent0d8d4d42f2d00eb65262b49f4edd4cf7ef4eb6fc (diff)
[PATCH] use smp_mb/wmb/rmb where possible
Replace a number of memory barriers with smp_ variants. This means we won't take the unnecessary hit on UP machines. Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/rwsem-spinlock.c6
-rw-r--r--lib/rwsem.c4
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/rwsem-spinlock.c b/lib/rwsem-spinlock.c
index 21f0db2c9711..40ffde940a86 100644
--- a/lib/rwsem-spinlock.c
+++ b/lib/rwsem-spinlock.c
@@ -76,7 +76,7 @@ __rwsem_do_wake(struct rw_semaphore *sem, int wakewrite)
76 list_del(&waiter->list); 76 list_del(&waiter->list);
77 tsk = waiter->task; 77 tsk = waiter->task;
78 /* Don't touch waiter after ->task has been NULLed */ 78 /* Don't touch waiter after ->task has been NULLed */
79 mb(); 79 smp_mb();
80 waiter->task = NULL; 80 waiter->task = NULL;
81 wake_up_process(tsk); 81 wake_up_process(tsk);
82 put_task_struct(tsk); 82 put_task_struct(tsk);
@@ -91,7 +91,7 @@ __rwsem_do_wake(struct rw_semaphore *sem, int wakewrite)
91 91
92 list_del(&waiter->list); 92 list_del(&waiter->list);
93 tsk = waiter->task; 93 tsk = waiter->task;
94 mb(); 94 smp_mb();
95 waiter->task = NULL; 95 waiter->task = NULL;
96 wake_up_process(tsk); 96 wake_up_process(tsk);
97 put_task_struct(tsk); 97 put_task_struct(tsk);
@@ -123,7 +123,7 @@ __rwsem_wake_one_writer(struct rw_semaphore *sem)
123 list_del(&waiter->list); 123 list_del(&waiter->list);
124 124
125 tsk = waiter->task; 125 tsk = waiter->task;
126 mb(); 126 smp_mb();
127 waiter->task = NULL; 127 waiter->task = NULL;
128 wake_up_process(tsk); 128 wake_up_process(tsk);
129 put_task_struct(tsk); 129 put_task_struct(tsk);
diff --git a/lib/rwsem.c b/lib/rwsem.c
index 7644089ec8fa..62fa4eba9ffe 100644
--- a/lib/rwsem.c
+++ b/lib/rwsem.c
@@ -74,7 +74,7 @@ __rwsem_do_wake(struct rw_semaphore *sem, int downgrading)
74 */ 74 */
75 list_del(&waiter->list); 75 list_del(&waiter->list);
76 tsk = waiter->task; 76 tsk = waiter->task;
77 mb(); 77 smp_mb();
78 waiter->task = NULL; 78 waiter->task = NULL;
79 wake_up_process(tsk); 79 wake_up_process(tsk);
80 put_task_struct(tsk); 80 put_task_struct(tsk);
@@ -117,7 +117,7 @@ __rwsem_do_wake(struct rw_semaphore *sem, int downgrading)
117 waiter = list_entry(next, struct rwsem_waiter, list); 117 waiter = list_entry(next, struct rwsem_waiter, list);
118 next = waiter->list.next; 118 next = waiter->list.next;
119 tsk = waiter->task; 119 tsk = waiter->task;
120 mb(); 120 smp_mb();
121 waiter->task = NULL; 121 waiter->task = NULL;
122 wake_up_process(tsk); 122 wake_up_process(tsk);
123 put_task_struct(tsk); 123 put_task_struct(tsk);