PageRenderTime 27ms CodeModel.GetById 17ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/drivers/acpi/sleep/poweroff.c

https://bitbucket.org/evzijst/gittest
C | 39 lines | 27 code | 5 blank | 7 comment | 2 complexity | 29efb86378d39f95c7612beb6eb82112 MD5 | raw file
 1/*
 2 * poweroff.c - ACPI handler for powering off the system.
 3 *
 4 * AKA S5, but it is independent of whether or not the kernel supports
 5 * any other sleep support in the system.
 6 */
 7
 8#include <linux/pm.h>
 9#include <linux/init.h>
10#include <acpi/acpi_bus.h>
11#include <linux/sched.h>
12#include "sleep.h"
13
14static void
15acpi_power_off (void)
16{
17	printk("%s called\n",__FUNCTION__);
18	/* Some SMP machines only can poweroff in boot CPU */
19	set_cpus_allowed(current, cpumask_of_cpu(0));
20	acpi_wakeup_gpe_poweroff_prepare();
21	acpi_enter_sleep_state_prep(ACPI_STATE_S5);
22	ACPI_DISABLE_IRQS();
23	acpi_enter_sleep_state(ACPI_STATE_S5);
24}
25
26static int acpi_poweroff_init(void)
27{
28	if (!acpi_disabled) {
29		u8 type_a, type_b;
30		acpi_status status;
31
32		status = acpi_get_sleep_type_data(ACPI_STATE_S5, &type_a, &type_b);
33		if (ACPI_SUCCESS(status))
34			pm_power_off = acpi_power_off;
35	}
36	return 0;
37}
38
39late_initcall(acpi_poweroff_init);