[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] libxl: ocaml: guard x86-specific functions behind an ifdef



On 09/01/14 16:36, Anil Madhavapeddy wrote:
> The various cpuid functions are not available on ARM, so this
> makes them raise an OCaml exception.  Omitting the functions
> completely them results in a link failure in oxenstored due to
> the missing symbols, so this is preferable to the much bigger
> patch that would result from adding conditional compilation into
> the OCaml interfaces.
>
> Signed-off-by: Anil Madhavapeddy <anil@xxxxxxxxxx>
>
> ---
>  tools/ocaml/libs/xc/xenctrl_stubs.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c 
> b/tools/ocaml/libs/xc/xenctrl_stubs.c
> index f5cf0ed..76864cc 100644
> --- a/tools/ocaml/libs/xc/xenctrl_stubs.c
> +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
> @@ -714,6 +714,7 @@ CAMLprim value stub_xc_domain_cpuid_set(value xch, value 
> domid,
>  {
>       CAMLparam4(xch, domid, input, config);
>       CAMLlocal2(array, tmp);
> +#if defined(__i386__) || defined(__x86_64__)
>       int r;
>       unsigned int c_input[2];
>       char *c_config[4], *out_config[4];
> @@ -742,17 +743,24 @@ CAMLprim value stub_xc_domain_cpuid_set(value xch, 
> value domid,
>                        c_input, (const char **)c_config, out_config);
>       if (r < 0)
>               failwith_xc(_H(xch));
> +#else
> +     failwith_xc(_H(xch));

You probably want to set xc's last error so failwith_xc() gives an
exception with a relevant error message.

~Andrew

> +#endif
>       CAMLreturn(array);
>  }
>  
>  CAMLprim value stub_xc_domain_cpuid_apply_policy(value xch, value domid)
>  {
>       CAMLparam2(xch, domid);
> +#if defined(__i386__) || defined(__x86_64__)
>       int r;
>  
>       r = xc_cpuid_apply_policy(_H(xch), _D(domid));
>       if (r < 0)
>               failwith_xc(_H(xch));
> +#else
> +     failwith_xc(_H(xch));
> +#endif
>       CAMLreturn(Val_unit);
>  }
>  
> @@ -760,6 +768,7 @@ CAMLprim value stub_xc_cpuid_check(value xch, value 
> input, value config)
>  {
>       CAMLparam3(xch, input, config);
>       CAMLlocal3(ret, array, tmp);
> +#if defined(__i386__) || defined(__x86_64__)
>       int r;
>       unsigned int c_input[2];
>       char *c_config[4], *out_config[4];
> @@ -792,6 +801,9 @@ CAMLprim value stub_xc_cpuid_check(value xch, value 
> input, value config)
>       Store_field(ret, 0, Val_bool(r));
>       Store_field(ret, 1, array);
>  
> +#else
> +     failwith_xc(_H(xch));
> +#endif
>       CAMLreturn(ret);
>  }
>  


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.