]> xenbits.xensource.com Git - xcp/xen-api-libs.git/commitdiff
Add a method to trigger a sleep button push in a domain
authorPaul Durrant <paul.durrant@eu.citrix.com>
Tue, 5 Jan 2010 17:03:49 +0000 (17:03 +0000)
committerPaul Durrant <paul.durrant@eu.citrix.com>
Tue, 5 Jan 2010 17:03:49 +0000 (17:03 +0000)
Signed-off-by: Paul Durrant <paul.durrant@eu.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 b6ec5e5ee43ed8a1929db9bf481be9c4123aba56..a7c0f6c333814898bb6c3542d26c366f441f3000 100644 (file)
--- a/xc/xc.h
+++ b/xc/xc.h
@@ -185,6 +185,7 @@ 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);
+int xc_domain_trigger_sleep(int handle, unsigned int domid);
 
 #if XEN_SYSCTL_INTERFACE_VERSION >= 6
 #define SAFEDIV(a, b)                                  (((b) >= 0) ? (a) / (b) : (a))
index 1d6ae970607e483e5707c64965787b4fd244ad0b..4dcb801d653bc4aba0975b90e93e640016486bc0 100644 (file)
--- a/xc/xc.ml
+++ b/xc/xc.ml
@@ -254,6 +254,7 @@ external domain_send_s3resume: handle -> domid -> unit = "stub_xc_domain_send_s3
 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 domain_trigger_sleep: handle -> domid -> unit = "stub_xc_domain_trigger_sleep"
 
 (** check if some hvm domain got pv driver or not *)
 external hvm_check_pvdriver: handle -> domid -> bool
index 1e31cc620bad63426791eb4a654d43432e8f62d9..84703a21d79fd949ce72e68e3eb3d4b0de203455 100644 (file)
--- a/xc/xc.mli
+++ b/xc/xc.mli
@@ -168,6 +168,8 @@ external domain_get_acpi_s_state: handle -> domid -> int = "stub_xc_domain_get_a
 
 external domain_trigger_power: handle -> domid -> unit
   = "stub_xc_domain_trigger_power"
+external domain_trigger_sleep: handle -> domid -> unit
+  = "stub_xc_domain_trigger_sleep"
 
 external hvm_check_pvdriver : handle -> domid -> bool
   = "stub_xc_hvm_check_pvdriver"
index 661b6a1b9ad8c4ea2beaf8cc2fef0bd2020267fa..1a0dc84df179b22b0b9b950191daaef782505133 100644 (file)
@@ -1562,6 +1562,19 @@ int xc_domain_trigger_power(int handle, unsigned int domid)
     return ret;
 }
 
+int xc_domain_trigger_sleep(int handle, unsigned int domid)
+{
+    int ret;
+
+    DECLARE_DOMCTL(XEN_DOMCTL_sendtrigger, domid);
+    domctl.u.sendtrigger.trigger = XEN_DOMCTL_SENDTRIGGER_SLEEP;
+
+       ret = do_domctl(handle, &domctl);
+       if (ret != 0)
+               xc_error_set("sleep button failed: %s", xc_error_get());
+    return ret;
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: t
index ffce8ffbe60c79f14cbc5a7dcf6c0e15c1ced17c..a5fcf050cfd133e85469ef9f48cf6b8cb0c44bbb 100644 (file)
@@ -1216,6 +1216,13 @@ CAMLprim value stub_xc_domain_trigger_power(value handle, value domid)
        CAMLreturn(Val_unit);
 }
 
+CAMLprim value stub_xc_domain_trigger_sleep(value handle, value domid)
+{
+       CAMLparam2(handle, domid);
+       xc_domain_trigger_sleep(_H(handle), _D(domid));
+       CAMLreturn(Val_unit);
+}
+
 /*
  * Local variables:
  *  indent-tabs-mode: t