Skip to contentSkip to conversation

i386/apm: use wait_event_interruptible_timeout()

PATCH In review Nishanth Aravamudan 1 participant 2 messages May 2, 2005 – May 3, 2005 Kernel janitors

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 i386/apm: use wait_event_interruptible_timeout()

Use wait_event_interruptible_timeout() instead of custom wait-queue.

arch/i386/kernel/apm.c +5 -11
@@ -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)

_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors

#1 lore raw
Quoted 20 lines · Nishanth Aravamudan

Use wait_event_interruptible_timeout() instead of custom wait-queue.

arch/i386/kernel/apm.c +1 -1
@@ -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);

arch/i386/kernel/apm.c static void apm_event_handler(void) · line 1424

Quoted 10 lines
arch/i386/kernel/apm.c +3 -7
-
-	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);

Hmm, this will lead to some not so subtle breakage with wait-queues. Please do not apply.

Thanks,
Nish

_______________________________________________
Kernel-janitors mailing list
[email protected]
http://lists.osdl.org/mailman/listinfo/kernel-janitors