pnpbios: convert to use the kthread API

This patches modifies the pnpbios kernel thread to start with ktrhead_run
not kernel_thread and deamonize.  Doing this makes the code a little
simpler and easier to maintain.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: Adam Belay <ambx1@neo.rr.com>
Cc: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Eric W. Biederman 2007-05-08 00:30:17 -07:00 committed by Linus Torvalds
parent 1bd0cf1fc7
commit db9c02fa8b
1 changed files with 7 additions and 9 deletions

View File

@ -62,6 +62,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/acpi.h> #include <linux/acpi.h>
#include <linux/freezer.h> #include <linux/freezer.h>
#include <linux/kthread.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/desc.h> #include <asm/desc.h>
@ -159,9 +160,7 @@ static int pnp_dock_thread(void * unused)
{ {
static struct pnp_docking_station_info now; static struct pnp_docking_station_info now;
int docked = -1, d = 0; int docked = -1, d = 0;
daemonize("kpnpbiosd"); while (!unloading)
allow_signal(SIGKILL);
while(!unloading && !signal_pending(current))
{ {
int status; int status;
@ -170,11 +169,8 @@ static int pnp_dock_thread(void * unused)
*/ */
msleep_interruptible(2000); msleep_interruptible(2000);
if(signal_pending(current)) { if (try_to_freeze())
if (try_to_freeze()) continue;
continue;
break;
}
status = pnp_bios_dock_station_info(&now); status = pnp_bios_dock_station_info(&now);
@ -581,6 +577,7 @@ subsys_initcall(pnpbios_init);
static int __init pnpbios_thread_init(void) static int __init pnpbios_thread_init(void)
{ {
struct task_struct *task;
#if defined(CONFIG_PPC_MERGE) #if defined(CONFIG_PPC_MERGE)
if (check_legacy_ioport(PNPBIOS_BASE)) if (check_legacy_ioport(PNPBIOS_BASE))
return 0; return 0;
@ -589,7 +586,8 @@ static int __init pnpbios_thread_init(void)
return 0; return 0;
#ifdef CONFIG_HOTPLUG #ifdef CONFIG_HOTPLUG
init_completion(&unload_sem); init_completion(&unload_sem);
if (kernel_thread(pnp_dock_thread, NULL, CLONE_KERNEL) > 0) task = kthread_run(pnp_dock_thread, NULL, "kpnpbiosd");
if (!IS_ERR(task))
unloading = 0; unloading = 0;
#endif #endif
return 0; return 0;