Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
kernel
power
poweroff.c
Go to the documentation of this file.
1
/*
2
* poweroff.c - sysrq handler to gracefully power down machine.
3
*
4
* This file is released under the GPL v2
5
*/
6
7
#include <linux/kernel.h>
8
#include <
linux/sysrq.h
>
9
#include <
linux/init.h
>
10
#include <
linux/pm.h
>
11
#include <
linux/workqueue.h
>
12
#include <linux/reboot.h>
13
#include <
linux/cpumask.h
>
14
15
/*
16
* When the user hits Sys-Rq o to power down the machine this is the
17
* callback we use.
18
*/
19
20
static
void
do_poweroff(
struct
work_struct
*
dummy
)
21
{
22
kernel_power_off
();
23
}
24
25
static
DECLARE_WORK
(poweroff_work, do_poweroff);
26
27
static
void
handle_poweroff(
int
key
)
28
{
29
/* run sysrq poweroff on boot cpu */
30
schedule_work_on
(cpumask_first(cpu_online_mask), &poweroff_work);
31
}
32
33
static
struct
sysrq_key_op
sysrq_poweroff_op = {
34
.handler = handle_poweroff,
35
.help_msg =
"powerOff"
,
36
.action_msg =
"Power Off"
,
37
.enable_mask =
SYSRQ_ENABLE_BOOT
,
38
};
39
40
static
int
__init
pm_sysrq_init(
void
)
41
{
42
register_sysrq_key
(
'o'
, &sysrq_poweroff_op);
43
return
0;
44
}
45
46
subsys_initcall
(pm_sysrq_init);
Generated on Thu Jan 10 2013 14:54:42 for Linux Kernel by
1.8.2