]> xenbits.xensource.com Git - xcp/xen-api-libs.git/commitdiff
Add a method to trigger a power button push in a domain
authorPaul Durrant <paul.durrant@citrix.com>
Tue, 22 Dec 2009 16:22:25 +0000 (16:22 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Tue, 22 Dec 2009 16:22:25 +0000 (16:22 +0000)
signed-off-by: Paul Durrant <paul.durrant@citrix.com>

xc/xc.h
xc/xc.ml
xc/xc.mli
xc/xc_lib.c
xc/xc_stubs.c

diff --git a/xc/xc.h b/xc/xc.h
index 19c4557f7801646524f58b3aa8489d5051a1d984..b6ec5e5ee43ed8a1929db9bf481be9c4123aba56 100644 (file)
--- a/xc/xc.h
+++ b/xc/xc.h
@@ -184,6 +184,7 @@ int xc_domain_set_vpt_align(int handle, unsigned int domid, int vpt_align);
 int xc_domain_set_hpet(int handle, unsigned int domid, int hpet);
 int xc_domain_set_timer_mode(int handle, unsigned int domid, int mode);
 int xc_domain_get_acpi_s_state(int handle, unsigned int domid);
+int xc_domain_trigger_power(int handle, unsigned int domid);
 
 #if XEN_SYSCTL_INTERFACE_VERSION >= 6
 #define SAFEDIV(a, b)                                  (((b) >= 0) ? (a) / (b) : (a))
index e12c92e26a692ec80dceff8d196534bcea0758de..1d6ae970607e483e5707c64965787b4fd244ad0b 100644 (file)
--- a/xc/xc.ml
+++ b/xc/xc.ml
@@ -253,6 +253,8 @@ external domain_set_vpt_align: handle -> domid -> int -> unit = "stub_xc_domain_
 external domain_send_s3resume: handle -> domid -> unit = "stub_xc_domain_send_s3resume"
 external domain_get_acpi_s_state: handle -> domid -> int = "stub_xc_domain_get_acpi_s_state"
 
+external domain_trigger_power: handle -> domid -> unit = "stub_xc_domain_trigger_power"
+
 (** check if some hvm domain got pv driver or not *)
 external hvm_check_pvdriver: handle -> domid -> bool
        = "stub_xc_hvm_check_pvdriver"
index 360b4b096f891621b8115a4e6034a7e57a2156d5..1e31cc620bad63426791eb4a654d43432e8f62d9 100644 (file)
--- a/xc/xc.mli
+++ b/xc/xc.mli
@@ -166,6 +166,9 @@ external domain_send_s3resume: handle -> domid -> unit
   = "stub_xc_domain_send_s3resume"
 external domain_get_acpi_s_state: handle -> domid -> int = "stub_xc_domain_get_acpi_s_state"
 
+external domain_trigger_power: handle -> domid -> unit
+  = "stub_xc_domain_trigger_power"
+
 external hvm_check_pvdriver : handle -> domid -> bool
   = "stub_xc_hvm_check_pvdriver"
 external version : handle -> version = "stub_xc_version_version"
index aa13247ccff02772770e51a8036f782b40aa748c..661b6a1b9ad8c4ea2beaf8cc2fef0bd2020267fa 100644 (file)
@@ -1549,6 +1549,19 @@ int xc_domain_suppress_spurious_page_faults(int xc, uint32_t domid)
        return rc;
 }
 
+int xc_domain_trigger_power(int handle, unsigned int domid)
+{
+    int ret;
+
+    DECLARE_DOMCTL(XEN_DOMCTL_sendtrigger, domid);
+    domctl.u.sendtrigger.trigger = XEN_DOMCTL_SENDTRIGGER_POWER;
+
+       ret = do_domctl(handle, &domctl);
+       if (ret != 0)
+               xc_error_set("power button failed: %s", xc_error_get());
+    return ret;
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: t
index 531dd5a5e4789a072b3a8afba7df50c42d2195ab..ffce8ffbe60c79f14cbc5a7dcf6c0e15c1ced17c 100644 (file)
@@ -1209,6 +1209,13 @@ CAMLprim value stub_xc_domain_set_vpt_align(value handle, value id, value mode)
        CAMLreturn(Val_unit);
 }
 
+CAMLprim value stub_xc_domain_trigger_power(value handle, value domid)
+{
+       CAMLparam2(handle, domid);
+       xc_domain_trigger_power(_H(handle), _D(domid));
+       CAMLreturn(Val_unit);
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: t