# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 787b39f5fc83d8b599b0d8c824eccea00f9367f0
# Parent 4080ec91a0144dfc11a7e8feddd2274a57fd43fb
Externally triggered reboot signal executes ctrl_alt_del()
rather than calling /sbin/reboot directly.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
diff -r 4080ec91a014 -r 787b39f5fc83
linux-2.6-xen-sparse/drivers/xen/core/reboot.c
--- a/linux-2.6-xen-sparse/drivers/xen/core/reboot.c Wed Mar 22 15:47:18 2006
+++ b/linux-2.6-xen-sparse/drivers/xen/core/reboot.c Wed Mar 22 15:48:00 2006
@@ -25,9 +25,10 @@
EXPORT_SYMBOL(pm_power_off);
#endif
+extern void ctrl_alt_del(void);
+
#define SHUTDOWN_INVALID -1
#define SHUTDOWN_POWEROFF 0
-#define SHUTDOWN_REBOOT 1
#define SHUTDOWN_SUSPEND 2
/* Code 3 is SHUTDOWN_CRASH, which we don't use because the domain can only
* report a crash, not be instructed to crash!
@@ -234,33 +235,19 @@
{
static char *envp[] = { "HOME=/", "TERM=linux",
"PATH=/sbin:/usr/sbin:/bin:/usr/bin", NULL };
- static char *restart_argv[] = { "/sbin/reboot", NULL };
static char *poweroff_argv[] = { "/sbin/poweroff", NULL };
extern asmlinkage long sys_reboot(int magic1, int magic2,
unsigned int cmd, void *arg);
- daemonize("shutdown");
-
- switch (shutting_down) {
- case SHUTDOWN_POWEROFF:
- case SHUTDOWN_HALT:
+ if ((shutting_down == SHUTDOWN_POWEROFF) ||
+ (shutting_down == SHUTDOWN_HALT)) {
if (execve("/sbin/poweroff", poweroff_argv, envp) < 0) {
sys_reboot(LINUX_REBOOT_MAGIC1,
LINUX_REBOOT_MAGIC2,
LINUX_REBOOT_CMD_POWER_OFF,
NULL);
}
- break;
-
- case SHUTDOWN_REBOOT:
- if (execve("/sbin/reboot", restart_argv, envp) < 0) {
- sys_reboot(LINUX_REBOOT_MAGIC1,
- LINUX_REBOOT_MAGIC2,
- LINUX_REBOOT_CMD_RESTART,
- NULL);
- }
- break;
}
shutting_down = SHUTDOWN_INVALID; /* could try again */
@@ -331,7 +318,7 @@
if (strcmp(str, "poweroff") == 0)
shutting_down = SHUTDOWN_POWEROFF;
else if (strcmp(str, "reboot") == 0)
- shutting_down = SHUTDOWN_REBOOT;
+ ctrl_alt_del();
else if (strcmp(str, "suspend") == 0)
shutting_down = SHUTDOWN_SUSPEND;
else if (strcmp(str, "halt") == 0)
@@ -391,8 +378,6 @@
};
#endif
-static struct notifier_block xenstore_notifier;
-
static int setup_shutdown_watcher(struct notifier_block *notifier,
unsigned long event,
void *data)
@@ -420,11 +405,10 @@
static int __init setup_shutdown_event(void)
{
-
- xenstore_notifier.notifier_call = setup_shutdown_watcher;
-
+ static struct notifier_block xenstore_notifier = {
+ .notifier_call = setup_shutdown_watcher
+ };
register_xenstore_notifier(&xenstore_notifier);
-
return 0;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|