|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 11/62] tools/ocaml: Expose arch_config in domaininfo
From: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
---
tools/ocaml/libs/xc/xenctrl.ml | 29 +++++++++++++++++++++++++++++
tools/ocaml/libs/xc/xenctrl.mli | 28 ++++++++++++++++++++++++++++
tools/ocaml/libs/xc/xenctrl_stubs.c | 26 ++++++++++++++++++++++++--
3 files changed, 81 insertions(+), 2 deletions(-)
diff --git a/tools/ocaml/libs/xc/xenctrl.ml b/tools/ocaml/libs/xc/xenctrl.ml
index 70a325b0e9..d549068d60 100644
--- a/tools/ocaml/libs/xc/xenctrl.ml
+++ b/tools/ocaml/libs/xc/xenctrl.ml
@@ -28,6 +28,34 @@ type vcpuinfo =
cpumap: int32;
}
+type xen_arm_arch_domainconfig =
+{
+ gic_version: int;
+ nr_spis: int;
+ clock_frequency: int32;
+}
+
+type x86_arch_emulation_flags =
+ | X86_EMU_LAPIC
+ | X86_EMU_HPET
+ | X86_EMU_PM
+ | X86_EMU_RTC
+ | X86_EMU_IOAPIC
+ | X86_EMU_PIC
+ | X86_EMU_VGA
+ | X86_EMU_IOMMU
+ | X86_EMU_PIT
+ | X86_EMU_USE_PIRQ
+
+type xen_x86_arch_domainconfig =
+{
+ emulation_flags: x86_arch_emulation_flags list;
+}
+
+type arch_domainconfig =
+ | ARM of xen_arm_arch_domainconfig
+ | X86 of xen_x86_arch_domainconfig
+
type domaininfo =
{
domid : domid;
@@ -46,6 +74,7 @@ type domaininfo =
max_vcpu_id : int;
ssidref : int32;
handle : int array;
+ arch_config : arch_domainconfig;
}
type sched_control =
diff --git a/tools/ocaml/libs/xc/xenctrl.mli b/tools/ocaml/libs/xc/xenctrl.mli
index 702d8a7ab8..08f1fd26ae 100644
--- a/tools/ocaml/libs/xc/xenctrl.mli
+++ b/tools/ocaml/libs/xc/xenctrl.mli
@@ -22,6 +22,33 @@ type vcpuinfo = {
cputime : int64;
cpumap : int32;
}
+
+type xen_arm_arch_domainconfig = {
+ gic_version: int;
+ nr_spis: int;
+ clock_frequency: int32;
+}
+
+type x86_arch_emulation_flags =
+ | X86_EMU_LAPIC
+ | X86_EMU_HPET
+ | X86_EMU_PM
+ | X86_EMU_RTC
+ | X86_EMU_IOAPIC
+ | X86_EMU_PIC
+ | X86_EMU_VGA
+ | X86_EMU_IOMMU
+ | X86_EMU_PIT
+ | X86_EMU_USE_PIRQ
+
+type xen_x86_arch_domainconfig = {
+ emulation_flags: x86_arch_emulation_flags list;
+}
+
+type arch_domainconfig =
+ | ARM of xen_arm_arch_domainconfig
+ | X86 of xen_x86_arch_domainconfig
+
type domaininfo = {
domid : domid;
dying : bool;
@@ -39,6 +66,7 @@ type domaininfo = {
max_vcpu_id : int;
ssidref : int32;
handle : int array;
+ arch_config : arch_domainconfig;
}
type sched_control = { weight : int; cap : int; }
type physinfo_cap_flag = CAP_HVM | CAP_DirectIO
diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c
b/tools/ocaml/libs/xc/xenctrl_stubs.c
index c66732f67c..124aa34fe8 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -273,10 +273,10 @@ CAMLprim value stub_xc_domain_shutdown(value xch, value
domid, value reason)
static value alloc_domaininfo(xc_domaininfo_t * info)
{
CAMLparam0();
- CAMLlocal2(result, tmp);
+ CAMLlocal5(result, tmp, arch_config, x86_arch_config, emul_list);
int i;
- result = caml_alloc_tuple(16);
+ result = caml_alloc_tuple(17);
Store_field(result, 0, Val_int(info->domain));
Store_field(result, 1, Val_bool(info->flags & XEN_DOMINF_dying));
@@ -302,6 +302,28 @@ static value alloc_domaininfo(xc_domaininfo_t * info)
Store_field(result, 15, tmp);
+ /* emulation_flags: x86_arch_emulation_flags list; */
+ tmp = emul_list = Val_emptylist;
+ for (i = 0; i < 10; i++) {
+ if ((info->arch_config.emulation_flags >> i) & 1) {
+ tmp = caml_alloc_small(2, Tag_cons);
+ Field(tmp, 0) = Val_int(i);
+ Field(tmp, 1) = emul_list;
+ emul_list = tmp;
+ }
+ }
+
+ /* xen_x86_arch_domainconfig */
+ x86_arch_config = caml_alloc_tuple(1);
+ Store_field(x86_arch_config, 0, emul_list);
+
+ /* arch_config: arch_domainconfig */
+ arch_config = caml_alloc_small(1, 1);
+
+ Store_field(arch_config, 0, x86_arch_config);
+
+ Store_field(result, 16, arch_config);
+
CAMLreturn(result);
}
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |