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

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

To: Dave Scott <Dave.Scott@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo in the style of libxl_get_physinfo
From: Ian Campbell <Ian.Campbell@xxxxxxxxxx>
Date: Wed, 6 Apr 2011 11:01:57 +0100
Cc: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 06 Apr 2011 03:04:48 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1f503b4a8ece2dc6f4c2.1300913847@ely>
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>
Organization: Citrix Systems, Inc.
References: <1f503b4a8ece2dc6f4c2.1300913847@ely>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Wed, 2011-03-23 at 20:57 +0000, Dave Scott wrote:
> # 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.

This doesn't fit in terribly well with the libxl IDL, which specifies a
tuple of arrays rather than an array of tuples.

Although the interface  doesn't appear to enforce it, I think the 3
arrays are allways populated with the same set of present CPUs. So in
this case though I think the IDL is wrong and the array of tuples
representation is much saner. I think I'll change the IDL as I try to
autogen the type...

Ian.

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



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

<Prev in Thread] Current Thread [Next in Thread>
  • Re: [Xen-devel] [PATCH] tools: ocaml: Add an ocaml binding for libxl_get_topologyinfo in the style of libxl_get_physinfo, Ian Campbell <=