projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ARM] 3933/1: Source drivers/ata/Kconfig
[powerpc.git]
/
arch
/
arm
/
kernel
/
apm.c
diff --git
a/arch/arm/kernel/apm.c
b/arch/arm/kernel/apm.c
index
766b6c0
..
ecf4f94
100644
(file)
--- a/
arch/arm/kernel/apm.c
+++ b/
arch/arm/kernel/apm.c
@@
-10,7
+10,6
@@
* [This document is available from Microsoft at:
* http://www.microsoft.com/hwdev/busbios/amp_12.htm]
*/
* [This document is available from Microsoft at:
* http://www.microsoft.com/hwdev/busbios/amp_12.htm]
*/
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/poll.h>
#include <linux/timer.h>
#include <linux/module.h>
#include <linux/poll.h>
#include <linux/timer.h>
@@
-26,6
+25,7
@@
#include <linux/list.h>
#include <linux/init.h>
#include <linux/completion.h>
#include <linux/list.h>
#include <linux/init.h>
#include <linux/completion.h>
+#include <linux/kthread.h>
#include <asm/apm.h> /* apm_power_info */
#include <asm/system.h>
#include <asm/apm.h> /* apm_power_info */
#include <asm/system.h>
@@
-81,7
+81,7
@@
struct apm_user {
*/
static int suspends_pending;
static int apm_disabled;
*/
static int suspends_pending;
static int apm_disabled;
-static
int arm_apm_active
;
+static
struct task_struct *kapmd_tsk
;
static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
static DECLARE_WAIT_QUEUE_HEAD(apm_waitqueue);
static DECLARE_WAIT_QUEUE_HEAD(apm_suspend_waitqueue);
@@
-98,7
+98,6
@@
static LIST_HEAD(apm_user_list);
* to be suspending the system.
*/
static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
* to be suspending the system.
*/
static DECLARE_WAIT_QUEUE_HEAD(kapmd_wait);
-static DECLARE_COMPLETION(kapmd_exit);
static DEFINE_SPINLOCK(kapmd_queue_lock);
static struct apm_queue kapmd_queue;
static DEFINE_SPINLOCK(kapmd_queue_lock);
static struct apm_queue kapmd_queue;
@@
-357,10
+356,8
@@
static int apm_open(struct inode * inode, struct file * filp)
{
struct apm_user *as;
{
struct apm_user *as;
- as = (struct apm_user *)k
m
alloc(sizeof(*as), GFP_KERNEL);
+ as = (struct apm_user *)k
z
alloc(sizeof(*as), GFP_KERNEL);
if (as) {
if (as) {
- memset(as, 0, sizeof(*as));
-
/*
* XXX - this is a tiny bit broken, when we consider BSD
* process accounting. If the device is opened by root, we
/*
* XXX - this is a tiny bit broken, when we consider BSD
* process accounting. If the device is opened by root, we
@@
-471,16
+468,13
@@
static int apm_get_info(char *buf, char **start, off_t fpos, int length)
static int kapmd(void *arg)
{
static int kapmd(void *arg)
{
- daemonize("kapmd");
- current->flags |= PF_NOFREEZE;
-
do {
apm_event_t event;
wait_event_interruptible(kapmd_wait,
do {
apm_event_t event;
wait_event_interruptible(kapmd_wait,
- !queue_empty(&kapmd_queue) ||
!arm_apm_active
);
+ !queue_empty(&kapmd_queue) ||
kthread_should_stop()
);
- if (
!arm_apm_active
)
+ if (
kthread_should_stop()
)
break;
spin_lock_irq(&kapmd_queue_lock);
break;
spin_lock_irq(&kapmd_queue_lock);
@@
-511,7
+505,7
@@
static int kapmd(void *arg)
}
} while (1);
}
} while (1);
-
complete_and_exit(&kapmd_exit, 0)
;
+
return 0
;
}
static int __init apm_init(void)
}
static int __init apm_init(void)
@@
-523,13
+517,14
@@
static int __init apm_init(void)
return -ENODEV;
}
return -ENODEV;
}
- arm_apm_active = 1;
-
- ret = kernel_thread(kapmd, NULL, CLONE_KERNEL);
- if (ret < 0) {
- arm_apm_active = 0;
+ kapmd_tsk = kthread_create(kapmd, NULL, "kapmd");
+ if (IS_ERR(kapmd_tsk)) {
+ ret = PTR_ERR(kapmd_tsk);
+ kapmd_tsk = NULL;
return ret;
}
return ret;
}
+ kapmd_tsk->flags |= PF_NOFREEZE;
+ wake_up_process(kapmd_tsk);
#ifdef CONFIG_PROC_FS
create_proc_info_entry("apm", 0, NULL, apm_get_info);
#ifdef CONFIG_PROC_FS
create_proc_info_entry("apm", 0, NULL, apm_get_info);
@@
-538,10
+533,7
@@
static int __init apm_init(void)
ret = misc_register(&apm_device);
if (ret != 0) {
remove_proc_entry("apm", NULL);
ret = misc_register(&apm_device);
if (ret != 0) {
remove_proc_entry("apm", NULL);
-
- arm_apm_active = 0;
- wake_up(&kapmd_wait);
- wait_for_completion(&kapmd_exit);
+ kthread_stop(kapmd_tsk);
}
return ret;
}
return ret;
@@
-552,9
+544,7
@@
static void __exit apm_exit(void)
misc_deregister(&apm_device);
remove_proc_entry("apm", NULL);
misc_deregister(&apm_device);
remove_proc_entry("apm", NULL);
- arm_apm_active = 0;
- wake_up(&kapmd_wait);
- wait_for_completion(&kapmd_exit);
+ kthread_stop(kapmd_tsk);
}
module_init(apm_init);
}
module_init(apm_init);