WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH 6 of 9] PoC: libxc+ocaml: add interfaces to manipulate

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 6 of 9] PoC: libxc+ocaml: add interfaces to manipulate various properties of HVM guests
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Tue, 11 Jan 2011 10:55:54 +0000
Cc: gianni.tedesco@xxxxxxxxxx, zheng.li@xxxxxxxxxxxxx
Delivery-date: Tue, 11 Jan 2011 03:45:58 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1294743348@xxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1294743348@xxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.5.2
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1294742832 0
# Node ID 62138b63f5c3a586ad3697c2c6bd1da44016c80a
# Parent  4370aef36fb02c95dbe5e6ca96dba69a4faa7d62
PoC: libxc+ocaml: add interfaces to manipulate various properties of HVM guests

* set timer mode
* set hpet
* set vpt align
* get ACPI
* set/get ACPI S state (allows send s3resume)

Taken from xen-api-libs.hg/xc and adjusted for upstream libxc+ocaml.

Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

diff -r 4370aef36fb0 -r 62138b63f5c3 tools/libxc/xc_domain.c
--- a/tools/libxc/xc_domain.c   Tue Jan 11 10:47:12 2011 +0000
+++ b/tools/libxc/xc_domain.c   Tue Jan 11 10:47:12 2011 +0000
@@ -1472,6 +1472,38 @@ int xc_domain_set_access_required(xc_int
     return do_domctl(xch, &domctl);
 }
 
+int xc_domain_send_s3resume(xc_interface *xch, unsigned int domid)
+{
+    return xc_set_hvm_param(xch, domid, HVM_PARAM_ACPI_S_STATE, 0);
+}
+
+int xc_domain_set_timer_mode(xc_interface *xch, unsigned int domid, int mode)
+{
+    return xc_set_hvm_param(xch, domid,
+                            HVM_PARAM_TIMER_MODE, (unsigned long) mode);
+}
+
+int xc_domain_set_hpet(xc_interface *xch, unsigned int domid, int hpet)
+{
+    return xc_set_hvm_param(xch, domid, HVM_PARAM_HPET_ENABLED, (unsigned 
long) hpet);
+}
+
+int xc_domain_set_vpt_align(xc_interface *xch, unsigned int domid, int 
vpt_align)
+{
+    return xc_set_hvm_param(xch, domid, HVM_PARAM_HPET_ENABLED, (unsigned 
long) vpt_align);
+}
+
+int xc_domain_get_acpi_s_state(xc_interface *xch, unsigned int domid)
+{
+    int ret;
+    unsigned long value;
+
+    ret = xc_get_hvm_param(xch, domid, HVM_PARAM_ACPI_S_STATE, &value);
+    if (ret != 0)
+        ERROR("get acpi s-state");
+    return value;
+}
+
 /*
  * Local variables:
  * mode: C
diff -r 4370aef36fb0 -r 62138b63f5c3 tools/libxc/xenctrl.h
--- a/tools/libxc/xenctrl.h     Tue Jan 11 10:47:12 2011 +0000
+++ b/tools/libxc/xenctrl.h     Tue Jan 11 10:47:12 2011 +0000
@@ -600,6 +600,12 @@ int xc_domain_hvm_setcontext(xc_interfac
                              uint8_t *hvm_ctxt,
                              uint32_t size);
 
+int xc_domain_send_s3resume(xc_interface *xch, unsigned int domid);
+int xc_domain_set_timer_mode(xc_interface *xch, unsigned int domid, int mode);
+int xc_domain_set_hpet(xc_interface *xch, unsigned int domid, int hpet);
+int xc_domain_set_vpt_align(xc_interface *xch, unsigned int domid, int 
vpt_align);
+int xc_domain_get_acpi_s_state(xc_interface *xch, unsigned int domid);
+
 /**
  * This function returns information about the execution context of a
  * particular vcpu of a domain.
diff -r 4370aef36fb0 -r 62138b63f5c3 tools/ocaml/libs/xc/xc.ml
--- a/tools/ocaml/libs/xc/xc.ml Tue Jan 11 10:47:12 2011 +0000
+++ b/tools/ocaml/libs/xc/xc.ml Tue Jan 11 10:47:12 2011 +0000
@@ -241,6 +241,13 @@ external domain_deassign_device: handle 
 external domain_test_assign_device: handle -> domid -> (int * int * int * int) 
-> bool
        = "stub_xc_domain_test_assign_device"
 
+external domain_set_timer_mode: handle -> domid -> int -> unit = 
"stub_xc_domain_set_timer_mode"
+external domain_set_hpet: handle -> domid -> int -> unit = 
"stub_xc_domain_set_hpet"
+external domain_set_vpt_align: handle -> domid -> int -> unit = 
"stub_xc_domain_set_vpt_align"
+
+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"
+
 (** check if some hvm domain got pv driver or not *)
 external hvm_check_pvdriver: handle -> domid -> bool
        = "stub_xc_hvm_check_pvdriver"
diff -r 4370aef36fb0 -r 62138b63f5c3 tools/ocaml/libs/xc/xc.mli
--- a/tools/ocaml/libs/xc/xc.mli        Tue Jan 11 10:47:12 2011 +0000
+++ b/tools/ocaml/libs/xc/xc.mli        Tue Jan 11 10:47:12 2011 +0000
@@ -158,6 +158,14 @@ external domain_deassign_device: handle 
 external domain_test_assign_device: handle -> domid -> (int * int * int * int) 
-> bool
        = "stub_xc_domain_test_assign_device"
 
+external domain_set_timer_mode: handle -> domid -> int -> unit = 
"stub_xc_domain_set_timer_mode"
+external domain_set_hpet: handle -> domid -> int -> unit = 
"stub_xc_domain_set_hpet"
+external domain_set_vpt_align: handle -> domid -> int -> unit = 
"stub_xc_domain_set_vpt_align"
+
+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 hvm_check_pvdriver : handle -> domid -> bool
   = "stub_xc_hvm_check_pvdriver"
 external version : handle -> version = "stub_xc_version_version"
diff -r 4370aef36fb0 -r 62138b63f5c3 tools/ocaml/libs/xc/xc_stubs.c
--- a/tools/ocaml/libs/xc/xc_stubs.c    Tue Jan 11 10:47:12 2011 +0000
+++ b/tools/ocaml/libs/xc/xc_stubs.c    Tue Jan 11 10:47:12 2011 +0000
@@ -1194,6 +1194,59 @@ CAMLprim value stub_xc_watchdog(value xc
        CAMLreturn(Val_int(ret));
 }
 
+CAMLprim value stub_xc_domain_get_acpi_s_state(value xch, value domid)
+{
+        CAMLparam2(xch, domid);
+        int ret;
+
+        ret = xc_domain_get_acpi_s_state(_H(xch), _D(domid));
+        if (ret < 0)
+                failwith_xc(_H(xch));
+
+        CAMLreturn(Val_int(ret));
+}
+
+CAMLprim value stub_xc_domain_send_s3resume(value xch, value domid)
+{
+        CAMLparam2(xch, domid);
+        xc_domain_send_s3resume(_H(xch), _D(domid));
+        CAMLreturn(Val_unit);
+}
+
+
+CAMLprim value stub_xc_domain_set_timer_mode(value xch, value id, value mode)
+{
+        CAMLparam3(xch, id, mode);
+        int ret;
+
+        ret = xc_domain_set_timer_mode(_H(xch), _D(id), Int_val(mode));
+        if (ret < 0)
+                failwith_xc(_H(xch));
+        CAMLreturn(Val_unit);
+}
+
+CAMLprim value stub_xc_domain_set_hpet(value xch, value id, value mode)
+{
+        CAMLparam3(xch, id, mode);
+        int ret;
+
+        ret = xc_domain_set_hpet(_H(xch), _D(id), Int_val(mode));
+        if (ret < 0)
+                failwith_xc(_H(xch));
+        CAMLreturn(Val_unit);
+}
+
+CAMLprim value stub_xc_domain_set_vpt_align(value xch, value id, value mode)
+{
+        CAMLparam3(xch, id, mode);
+        int ret;
+
+        ret = xc_domain_set_vpt_align(_H(xch), _D(id), Int_val(mode));
+        if (ret < 0)
+                failwith_xc(_H(xch));
+        CAMLreturn(Val_unit);
+}
+
 CAMLprim value stub_xc_get_boot_cpufeatures(value xch)
 {
        CAMLparam1(xch);

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api

<Prev in Thread] Current Thread [Next in Thread>