static dd_list *poweroff_handles;
static char *poweroff_type_flagpaths[] = { // index denotes type
- [POWER_OFF_DIRECT] = POWER_FLAG_POWEROFF,
+ [POWER_OFF_POWEROFF] = POWER_FLAG_POWEROFF,
[POWER_OFF_REBOOT] = POWER_FLAG_REBOOT,
};
static char *poweroff_type_names[] = { // index denotes type
[POWER_OFF_POWEROFF] = POWER_POWEROFF,
[POWER_OFF_POPUP] = PWROFF_POPUP,
[POWER_OFF_REBOOT] = POWER_REBOOT,
- [POWER_OFF_DIRECT] = "",
};
static char *poweroff_type_to_name(enum poweroff_type type)
return is_ok;
}
-static void powerdown(void)
+static void poweroff_request_shutdown()
+{
+ _I("Requested power off via systemd");
+
+ char *method;
+
+ if (poweroff_opt.type == POWER_OFF_REBOOT)
+ method = "Reboot";
+ else if (poweroff_opt.type == POWER_OFF_POWEROFF)
+ method = "PowerOff";
+ else {
+ _E("poweroff invalid type (%d)", poweroff_opt.type);
+ return;
+ }
+
+ dbus_handle_method_sync_timeout(SYSTEMD_DBUS_DEST,
+ SYSTEMD_DBUS_PATH,
+ SYSTEMD_DBUS_IFACE_MANAGER,
+ method,
+ NULL,
+ NULL,
+ POWEROFF_WAIT_SYSTEMD_MS);
+}
+
+void powerdown(void)
{
static int wait;
struct timeval now;
}
watchdog_notify();
-}
-
-static void poweroff_request_shutdown()
-{
- _I("Requested power off via systemd");
-
- char *method;
- if (poweroff_opt.type == POWER_OFF_REBOOT)
- method = "Reboot";
- else if (poweroff_opt.type == POWER_OFF_POWEROFF)
- method = "PowerOff";
- else {
- _E("poweroff invalid type (%d)", poweroff_opt.type);
- return;
- }
-
- dbus_handle_method_sync_timeout(SYSTEMD_DBUS_DEST,
- SYSTEMD_DBUS_PATH,
- SYSTEMD_DBUS_IFACE_MANAGER,
- method,
- NULL,
- NULL,
- POWEROFF_WAIT_SYSTEMD_MS);
-}
-
-static void poweroff_direct(void)
-{
- _I("Requested power off without systemd (direct call)");
- if (syscall(SYS_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
- LINUX_REBOOT_CMD_POWER_OFF, NULL) < 0)
- _E("Failed to poweroff (%d)", errno);
-}
-
-int poweroff_procedure(void)
-{
- powerdown();
-
- if (poweroff_opt.type == POWER_OFF_DIRECT)
- poweroff_direct();
- else
- poweroff_request_shutdown();
-
- return 0;
+ poweroff_request_shutdown();
}
int check_power_flag(void)
static gboolean poweroff_timeout_cb(void *data)
{
- int ret;
- pid_t pid;
+ pid_t pid = (pid_t)((intptr_t)data);
- pid = (pid_t)((intptr_t)data);
poweroff_remove_handle(pid);
if (DD_LIST_LENGTH(poweroff_handles)) {
/* TODO for notify. will be removed asap. */
vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, poweroff_opt.type);
- ret = poweroff_procedure();
- if (ret < 0)
- _E("Failed to %s (%d)", name, ret);
+ powerdown();
out:
if (disp_plgn.update_pm_setting)
g_variant_new("(i)", status));
}
-
static int power_execute_pid(char *type, char *option, pid_t pid)
{
if (during_poweroff) {
register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done);
add_poweroff_option(POWER_OFF_POWEROFF, NULL);
- add_poweroff_option(POWER_OFF_DIRECT, NULL);
add_poweroff_option(POWER_OFF_RESTART, NULL);
add_poweroff_option(POWER_OFF_POPUP, NULL);