[HVM][LINUX][TOOLS] Split control/reboot_module into control/feature-reboot
authorSteven Smith <ssmith@xensource.com>
Tue, 31 Oct 2006 10:11:53 +0000 (10:11 +0000)
committerSteven Smith <ssmith@xensource.com>
Tue, 31 Oct 2006 10:11:53 +0000 (10:11 +0000)
and control/feature-sysrq.  This is more consistent with the other
PV device protocols.

Signed-off-by: Steven Smith <sos22@cam.ac.uk>
linux-2.6-xen-sparse/drivers/xen/core/machine_reboot.c
linux-2.6-xen-sparse/drivers/xen/core/reboot.c
tools/python/xen/xend/image.py

index c14453ec7e95ec16b4aef91591b90672ccec0b78..f7994fc1ceb044243e33c0c8f42a5868fb3811aa 100644 (file)
@@ -59,10 +59,6 @@ EXPORT_SYMBOL(machine_restart);
 EXPORT_SYMBOL(machine_halt);
 EXPORT_SYMBOL(machine_power_off);
 
-#endif /* defined(__i386__) || defined(__x86_64__) */
-
-#if defined(__i386__) || defined(__x86_64__)
-
 /* Ensure we run on the idle task page tables so that we will
    switch page tables before running user space. This is needed
    on architectures with separate kernel and user page tables
index 9107b87b2a38e0386cbe7684304f27a4dca5b154..bbda6560217c3721b1ed1ace139d5cb6f4ef9255 100644 (file)
@@ -164,10 +164,14 @@ static int setup_shutdown_watcher(struct notifier_block *notifier,
        err = register_xenbus_watch(&shutdown_watch);
        if (err)
                printk(KERN_ERR "Failed to set shutdown watcher\n");
+       else
+               xenbus_write(XBT_NIL, "control", "feature-reboot", "1");
 
        err = register_xenbus_watch(&sysrq_watch);
        if (err)
                printk(KERN_ERR "Failed to set sysrq watcher\n");
+       else
+               xenbus_write(XBT_NIL, "control", "feature-sysrq", "1");
 
        return NOTIFY_DONE;
 }
@@ -179,10 +183,6 @@ static int __init setup_shutdown_event(void)
        };
        register_xenstore_notifier(&xenstore_notifier);
 
-       if (!is_initial_xendomain()) {
-               xenbus_write(XBT_NIL, "control", "reboot_module", "installed");
-       }
-
        return 0;
 }
 
index 0afe4355c377a96e56a2904a7f775c024ed8058d..48d256df160e3cccf95d4bbc3ff4bd89c15297fb 100644 (file)
@@ -282,7 +282,7 @@ class HVMImageHandler(ImageHandler):
         log.debug("apic           = %d", self.apic)
 
         self.register_shutdown_watch()
-        self.register_reboot_module_watch()
+        self.register_reboot_feature_watch()
 
         return xc.hvm_build(dom            = self.vm.getDomid(),
                             image          = self.kernel,
@@ -417,7 +417,7 @@ class HVMImageHandler(ImageHandler):
 
     def destroy(self):
         self.unregister_shutdown_watch();
-        self.unregister_reboot_module_watch();
+        self.unregister_reboot_feature_watch();
         if not self.pid:
             return
         os.kill(self.pid, signal.SIGKILL)
@@ -460,34 +460,34 @@ class HVMImageHandler(ImageHandler):
 
         return 1 # Keep watching
 
-    def register_reboot_module_watch(self):
-        """ add xen store watch on control/reboot_module """
-        self.rebootModuleWatch = xswatch(self.vm.dompath + "/control/reboot_module", \
-                                    self.hvm_reboot_module)
-        log.debug("hvm reboot module watch registered")
+    def register_reboot_feature_watch(self):
+        """ add xen store watch on control/feature-reboot """
+        self.rebootModuleWatch = xswatch(self.vm.dompath + "/control/feature-reboot", \
+                                         self.hvm_reboot_feature)
+        log.debug("hvm reboot feature watch registered")
 
-    def unregister_reboot_module_watch(self):
-        """Remove the watch on the control/reboot_module, if any. Nothrow
+    def unregister_reboot_feature_watch(self):
+        """Remove the watch on the control/feature-reboot, if any. Nothrow
         guarantee."""
 
         try:
-            if self.rebootModuleWatch:
-                self.rebootModuleWatch.unwatch()
+            if self.rebootFeatureWatch:
+                self.rebootFeatureWatch.unwatch()
         except:
-            log.exception("Unwatching hvm reboot module watch failed.")
-        self.rebootModuleWatch = None
-        log.debug("hvm reboot module watch unregistered")
+            log.exception("Unwatching hvm reboot feature watch failed.")
+        self.rebootFeatureWatch = None
+        log.debug("hvm reboot feature watch unregistered")
 
-    def hvm_reboot_module(self, _):
-        """ watch call back on node control/reboot_module,
+    def hvm_reboot_feature(self, _):
+        """ watch call back on node control/feature-reboot,
             if node changed, this function will be called
         """
         xd = xen.xend.XendDomain.instance()
         vm = xd.domain_lookup( self.vm.getDomid() )
 
-        reboot_module_status = vm.readDom('control/reboot_module')
-        log.debug("hvm_reboot_module fired, module status=%s", reboot_module_status)
-        if reboot_module_status == 'installed':
+        status = vm.readDom('control/feature-reboot')
+        log.debug("hvm_reboot_feature fired, module status=%s", status)
+        if status == '1':
             self.unregister_shutdown_watch()
 
         return 1 # Keep watching