|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] [PATCH] Propagate kernel errors in libxc
When the hypervisor returns and error through the kernel
or when simply when the kernel returns an error, the ioctl()
call in userspace returns -1 with the error value in errno.
This lib_xc was dropping this useful errno value by only
returning the -1. This change continues to propagate the
-errno value up the call chain.
The impetus for this change was xc_domain_getinfo() previously
it was not possible to distinguish the difference between an
error and the domainID (or greater) not existing in the hypervisor.
Now callers can compare the return value against -ESRCH to distinguish
the difference between errors and the domain not existing.
Signed-off-by: Josh Nicholas <jnicholas@xxxxxxxxxxxxxxx>
Signed-off-by: Ben Guthro <bguthro@xxxxxxxxxxxxxxx>
|
diff -r fcd625c4f896 tools/libxc/xc_linux.c
--- a/tools/libxc/xc_linux.c Mon Nov 05 10:39:07 2007 -0500
+++ b/tools/libxc/xc_linux.c Mon Nov 05 10:39:07 2007 -0500
@@ -153,7 +153,12 @@ int xc_map_foreign_ranges(int xc_handle,
static int do_privcmd(int xc_handle, unsigned int cmd, unsigned long data)
{
- return ioctl(xc_handle, cmd, data);
+ int ret = ioctl(xc_handle, cmd, data);
+ if (ret >= 0)
+ return ret;
+ if (errno) // kernel errors are passed through errno with ioctl() ret
== -1
+ return (errno > 0) ? -errno : errno;
+ return ret;
}
int do_xen_hypercall(int xc_handle, privcmd_hypercall_t *hypercall)
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-devel] [PATCH] Propagate kernel errors in libxc,
Ben Guthro <=
|
|
|
|
|