From 0dc316dee192a2e178d52b2a2324fbe18ed46f1c Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Wed, 28 Jan 2004 19:46:52 -0800 Subject: [PATCH] [SPARC64]: Remove interruptible_sleep_on() usage, with help from Tom Callaway. --- arch/sparc64/kernel/power.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index b7e865eb71544..b53ecb88a780c 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c @@ -69,18 +69,26 @@ static int powerd(void *__unused) { static char *envp[] = { "HOME=/", "TERM=linux", "PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL }; char *argv[] = { "/sbin/shutdown", "-h", "now", NULL }; + DECLARE_WAITQUEUE(wait, current); daemonize("powerd"); + add_wait_queue(&powerd_wait, &wait); again: - while (button_pressed == 0) { + for (;;) { + set_task_state(current, TASK_INTERRUPTIBLE); + if (button_pressed) + break; flush_signals(current); - interruptible_sleep_on(&powerd_wait); + schedule(); } + __set_current_state(TASK_RUNNING); + remove_wait_queue(&powerd_wait, &wait); /* Ok, down we go... */ if (execve("/sbin/shutdown", argv, envp) < 0) { printk("powerd: shutdown execution failed\n"); + add_wait_queue(&powerd_wait, &wait); button_pressed = 0; goto again; } -- 2.53.0