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

Re: [Xen-devel] [PATCH XEN v6 27/32] tools/libs/call: Describe return values and error semantics for xencall*



On Thu, Dec 03, 2015 at 11:22:24AM +0000, Ian Campbell wrote:
> This behaviour has been confirmed by inspection on:
> 
>  - Linux
>  - FreeBSD (NB: hcall->retval is the hypercall return value only for
>    values >= 0. For negative values the underlying privcmd driver
>    translates the value from Xen to FreeBSD errno space and returns it as
>    the result of the ioctl, which becomes ret=-1/errno=EFOO in userspace)
>  - MiniOS (which takes care of errno in this library)
> 

It's worth noting that NetBSD also has similar behaviour -- it's privcmd
driver translates errno.

http://cvsweb.netbsd.org/bsdweb.cgi/src/sys/arch/xen/xen/privcmd.c?rev=1.49&content-type=text/x-cvsweb-markup

Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>

> Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
> Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>
> ---
> v6: New patch
> ---
>  tools/libs/call/include/xencall.h | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/tools/libs/call/include/xencall.h 
> b/tools/libs/call/include/xencall.h
> index 0d91aa8..3f325f0 100644
> --- a/tools/libs/call/include/xencall.h
> +++ b/tools/libs/call/include/xencall.h
> @@ -46,6 +46,21 @@ int xencall_close(xencall_handle *xcall);
>  
>  /*
>   * Call hypercalls with varying numbers of arguments.
> + *
> + * On success the return value of the hypercall is the return value of
> + * the xencall function.  On error these functions set errno and
> + * return -1.
> + *
> + * The errno values will be either:
> + * - The Xen hypercall error return (from xen/include/public/errno.h)
> + *   translated into the corresponding local value for that POSIX error.
> + * - An errno value produced by the OS driver or the library
> + *   implementation. Such values may be defined by POSIX or by the OS.
> + *
> + * Note that under some circumstances it will not be possible to tell
> + * whether an error came from Xen or from the OS/library.
> + *
> + * These functions never log.
>   */
>  int xencall0(xencall_handle *xcall, unsigned int op);
>  int xencall1(xencall_handle *xcall, unsigned int op,
> -- 
> 2.1.4
> 

_______________________________________________
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®.