
From: Srivatsa Vaddagiri <vatsa@in.ibm.com>

current_is_keventd() doesn't need to search across all the CPUs to identify
itself.


---

 25-akpm/kernel/workqueue.c |   15 ++++++++-------
 1 files changed, 8 insertions(+), 7 deletions(-)

diff -puN kernel/workqueue.c~current_is_keventd-speedup kernel/workqueue.c
--- 25/kernel/workqueue.c~current_is_keventd-speedup	Tue Mar  9 13:25:03 2004
+++ 25-akpm/kernel/workqueue.c	Tue Mar  9 13:25:57 2004
@@ -344,16 +344,17 @@ int keventd_up(void)
 int current_is_keventd(void)
 {
 	struct cpu_workqueue_struct *cwq;
-	int cpu;
+	int cpu = smp_processor_id();	/* preempt-safe: keventd is per-cpu */
+	int ret = 0;
 
 	BUG_ON(!keventd_wq);
 
-	for_each_cpu(cpu) {
-		cwq = keventd_wq->cpu_wq + cpu;
-		if (current == cwq->thread)
-			return 1;
-	}
-	return 0;
+	cwq = keventd_wq->cpu_wq + cpu;
+	if (current == cwq->thread)
+		ret = 1;
+
+	return ret;
+
 }
 
 void init_workqueues(void)

_
