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-changelog

[Xen-changelog] [xen-unstable] tools: ocaml: Add an ocaml binding for li

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo
From: Xen patchbot-unstable <patchbot@xxxxxxx>
Date: Fri, 01 Apr 2011 06:50:13 +0100
Delivery-date: Thu, 31 Mar 2011 22:50:54 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User David Scott <dave.scott@xxxxxxxxxxxxx>
# Date 1301594575 -3600
# Node ID 2b72369165e5c97b62c6f58bbe0f6cf7beffb62c
# Parent  5df57771cac998f0b1aadab0644a85b838999b72
tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo

Add an ocaml binding for libxl_get_topologyinfo in the style of
libxl_get_physinfo.

The function returns an array of optional records, one per possible pCPU.

Signed-off-by: David Scott <dave.scott@xxxxxxxxxxxxx>
Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---


diff -r 5df57771cac9 -r 2b72369165e5 tools/ocaml/libs/xl/xl.ml
--- a/tools/ocaml/libs/xl/xl.ml Thu Mar 31 18:16:34 2011 +0100
+++ b/tools/ocaml/libs/xl/xl.ml Thu Mar 31 19:02:55 2011 +0100
@@ -169,6 +169,15 @@
        physcap: int32;
 }
 
+type topology = 
+{
+       core: int;
+       socket: int;
+       node: int;
+}
+
+type topologyinfo = topology option array
+
 type sched_credit =
 {
        weight: int;
@@ -205,6 +214,8 @@
 external button_press : domid -> button -> unit = "stub_xl_button_press"
 external physinfo : unit -> physinfo = "stub_xl_physinfo"
 
+external topologyinfo: unit -> topologyinfo = "stub_xl_topologyinfo"
+
 external domain_sched_credit_get : domid -> sched_credit = 
"stub_xl_sched_credit_domain_get"
 external domain_sched_credit_set : domid -> sched_credit -> unit = 
"stub_xl_sched_credit_domain_set"
 
diff -r 5df57771cac9 -r 2b72369165e5 tools/ocaml/libs/xl/xl.mli
--- a/tools/ocaml/libs/xl/xl.mli        Thu Mar 31 18:16:34 2011 +0100
+++ b/tools/ocaml/libs/xl/xl.mli        Thu Mar 31 19:02:55 2011 +0100
@@ -169,6 +169,15 @@
        physcap: int32;
 }
 
+type topology = 
+{
+       core: int;
+       socket: int;
+       node: int;
+}
+
+type topologyinfo = topology option array
+
 type sched_credit =
 {
        weight: int;
@@ -205,6 +214,8 @@
 external button_press : domid -> button -> unit = "stub_xl_button_press"
 external physinfo : unit -> physinfo = "stub_xl_physinfo"
 
+external topologyinfo: unit -> topologyinfo = "stub_xl_topologyinfo"
+
 external domain_sched_credit_get : domid -> sched_credit = 
"stub_xl_sched_credit_domain_get"
 external domain_sched_credit_set : domid -> sched_credit -> unit = 
"stub_xl_sched_credit_domain_set"
 
diff -r 5df57771cac9 -r 2b72369165e5 tools/ocaml/libs/xl/xl_stubs.c
--- a/tools/ocaml/libs/xl/xl_stubs.c    Thu Mar 31 18:16:34 2011 +0100
+++ b/tools/ocaml/libs/xl/xl_stubs.c    Thu Mar 31 19:02:55 2011 +0100
@@ -345,6 +345,29 @@
        CAMLreturn(v);
 }
 
+static value Val_topologyinfo(libxl_topologyinfo *c_val)
+{
+       CAMLparam0();
+       CAMLlocal3(v, topology, topologyinfo);
+       int i;
+
+       topologyinfo = caml_alloc_tuple(c_val->coremap.entries);
+       for (i = 0; i < c_val->coremap.entries; i++) {  
+               v = Val_int(0); /* None */
+               if (c_val->coremap.array[i] != LIBXL_CPUARRAY_INVALID_ENTRY) {
+                       topology = caml_alloc_tuple(3);
+                       Store_field(topology, 0, 
Val_int(c_val->coremap.array[i]));
+                       Store_field(topology, 1, 
Val_int(c_val->socketmap.array[i]));
+                       Store_field(topology, 2, 
Val_int(c_val->nodemap.array[i]));
+                       v = caml_alloc(1, 0); /* Some */
+                       Store_field(v, 0, topology);
+               }
+               Store_field(topologyinfo, i, v);
+       }
+
+       CAMLreturn(topologyinfo);
+}
+
 value stub_xl_disk_add(value info, value domid)
 {
        CAMLparam2(info, domid);
@@ -620,6 +643,24 @@
        CAMLreturn(physinfo);
 }
 
+value stub_xl_topologyinfo(value unit)
+{
+       CAMLparam1(unit);
+       CAMLlocal1(topologyinfo);
+       libxl_topologyinfo c_topologyinfo;
+       int ret;
+       INIT_STRUCT();
+
+       INIT_CTX();
+       ret = libxl_get_topologyinfo(&ctx, &c_topologyinfo);
+       if (ret != 0)
+               failwith_xl("topologyinfo", &lg);
+       FREE_CTX();
+       
+       topologyinfo = Val_topologyinfo(&c_topologyinfo);
+       CAMLreturn(topologyinfo);
+}
+
 value stub_xl_sched_credit_domain_get(value domid)
 {
        CAMLparam1(domid);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo, Xen patchbot-unstable <=