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

Re: [Xen-devel] [PATCH 09/11] tools/xc: pass errno to callers of xc_domain_save



On Thu, Mar 06, Ian Jackson wrote:

> Olaf Hering writes ("[PATCH 09/11] tools/xc: pass errno to callers of 
> xc_domain_save"):
> > Callers of xc_domain_save use errno to print diagnostics if the call
> > fails. But xc_domain_save does not preserve the actual errno in case of
> > a failure.
> > 
> > This change preserves errno in all cases where code jumps to the label
> > "out". In addition a new label "exit" is added to catch also code which
> > used to do just "return 1".
> 
> I can't help wondering if this patch would be a lot smaller if it were
> done by having ERROR and PERROR, and the cleanup part of
> xc_domain_save, preserve errno.

Something like this for the macros?

diff --git a/tools/libxc/xc_private.h b/tools/libxc/xc_private.h
index a610f0c..8b791b6 100644
--- a/tools/libxc/xc_private.h
+++ b/tools/libxc/xc_private.h
@@ -123,9 +123,15 @@ void xc_report_progress_step(xc_interface *xch,
 #define DPRINTF(_f, _a...) xc_report(xch, xch->error_handler, XTL_DETAIL,0, _f 
, ## _a)
 #define DBGPRINTF(_f, _a...) xc_report(xch, xch->error_handler, XTL_DEBUG,0, 
_f , ## _a)
 
-#define ERROR(_m, _a...)  xc_report_error(xch,XC_INTERNAL_ERROR,_m , ## _a )
-#define PERROR(_m, _a...) xc_report_error(xch,XC_INTERNAL_ERROR,_m \
-                  " (%d = %s)", ## _a , errno, xc_strerror(xch, errno))
+#define ERROR(_m, _a...)  do { int __errno = errno; \
+        xc_report_error(xch,XC_INTERNAL_ERROR,_m , ## _a ); \
+        errno = __errno; \
+        } while (0)
+#define PERROR(_m, _a...) do { int __errno = errno; \
+        xc_report_error(xch,XC_INTERNAL_ERROR,_m " (%d = %s)", \
+        ## _a , errno, xc_strerror(xch, errno)); \
+        errno = __errno; \
+        } while (0)
 
 /*
  * HYPERCALL ARGUMENT BUFFERS


> > Note: some of the functions used in xc_domain_save do not use errno to
> > indicate a reason. In these cases the errno remains undefined as it used
> > to be without this change.
> 
> Do you intend to fix this too ?

I will have a look.

Olaf

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