[PATCH] i386/apm: use wait_event_interruptible_timeout()

Nishanth Aravamudan <[email protected]> Sun, 1 May 2005 23:18:24 -0700
Newsgroups org.kernel.vger.linux-laptop,org.kernel.vger.kernel-janitors
Message-ID <[email protected]>
Use wait_event_interruptible_timeout() instead of custom wait-queue.


Signed-off-by: Nishanth Aravamudan <[email protected]>

--- 2.6.12-rc3/arch/i386/kernel/apm.c	2005-04-29 11:03:03.000000000 -0700
+++ 2.6.12-rc3-dev/arch/i386/kernel/apm.c	2005-05-01 19:02:48.000000000 -0700
@@ -224,6 +224,7 @@
 #include <linux/smp_lock.h>
 #include <linux/dmi.h>
 #include <linux/suspend.h>
+#include <linux/wait.h>
 
 #include <asm/system.h>
 #include <asm/uaccess.h>
@@ -1418,22 +1419,15 @@ static void apm_event_handler(void)
 
 static void apm_mainloop(void)
 {
-	DECLARE_WAITQUEUE(wait, current);
-
-	add_wait_queue(&apm_waitqueue, &wait);
-	set_current_state(TASK_INTERRUPTIBLE);
-	for (;;) {
-		schedule_timeout(APM_CHECK_TIMEOUT);
-		if (exit_kapmd)
-			break;
+	do {
+		wait_event_interruptible_timeout(apm_waitqueue,
+				exit_kapmd, APM_CHECK_TIMEOUT);
 		/*
 		 * Ok, check all events, check for idle (and mark us sleeping
 		 * so as not to count towards the load average)..
 		 */
-		set_current_state(TASK_INTERRUPTIBLE);
 		apm_event_handler();
-	}
-	remove_wait_queue(&apm_waitqueue, &wait);
+	} while (!exit_kapmd);
 }
 
 static int check_apm_user(struct apm_user *as, const char *func)