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

[Xen-devel] [PATCH] tools: ocaml: Add an ocaml binding for libxl_get_top

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo in the style of libxl_get_physinfo
From: David Scott <dave.scott@xxxxxxxxxxxxx>
Date: Wed, 23 Mar 2011 20:57:27 +0000
Delivery-date: Wed, 23 Mar 2011 14:26:40 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.4.3
# HG changeset patch
# User David Scott <dave.scott@xxxxxxxxxxxxx>
# Date 1300913710 0
# Node ID 1f503b4a8ece2dc6f4c27477400fce5a6f253c67
# Parent  67525892e2c6ee27c25438d43699397c5a3e0272
tools: ocaml: 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>

diff -r 67525892e2c6 -r 1f503b4a8ece tools/ocaml/libs/xl/xl.ml
--- a/tools/ocaml/libs/xl/xl.ml Wed Mar 23 20:51:51 2011 +0000
+++ b/tools/ocaml/libs/xl/xl.ml Wed Mar 23 20:55:10 2011 +0000
@@ -167,6 +167,15 @@
        physcap: int32;
 }
 
+type topology = 
+{
+       core: int;
+       socket: int;
+       node: int;
+}
+
+type topologyinfo = topology option array
+
 type sched_credit =
 {
        weight: int;
@@ -203,6 +212,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 67525892e2c6 -r 1f503b4a8ece tools/ocaml/libs/xl/xl.mli
--- a/tools/ocaml/libs/xl/xl.mli        Wed Mar 23 20:51:51 2011 +0000
+++ b/tools/ocaml/libs/xl/xl.mli        Wed Mar 23 20:55:10 2011 +0000
@@ -167,6 +167,15 @@
        physcap: int32;
 }
 
+type topology = 
+{
+       core: int;
+       socket: int;
+       node: int;
+}
+
+type topologyinfo = topology option array
+
 type sched_credit =
 {
        weight: int;
@@ -203,6 +212,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 67525892e2c6 -r 1f503b4a8ece tools/ocaml/libs/xl/xl_stubs.c
--- a/tools/ocaml/libs/xl/xl_stubs.c    Wed Mar 23 20:51:51 2011 +0000
+++ b/tools/ocaml/libs/xl/xl_stubs.c    Wed Mar 23 20:55:10 2011 +0000
@@ -386,6 +386,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);
@@ -661,6 +684,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-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

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