Razvan Cojocaru
2013-Jan-23 09:19 UTC
[PATCH V2] libxc, libxenstore: make the headers C++-friendlier
Made the xenctrl.h and xenstore.h easier to use with C++: added ''extern "C"'' statements, moved the definition of enum xc_error_code above it''s typedef, and renamed a ''new'' parameter (''new'' is a C++ keyword). Signed-off-by: Razvan Cojocaru <rzvncj@gmail.com> diff -r 5af4f2ab06f3 -r c273ee1fc8ba tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Tue Jan 22 09:33:10 2013 +0100 +++ b/tools/libxc/xenctrl.h Wed Jan 23 11:18:49 2013 +0200 @@ -26,6 +26,10 @@ #ifndef XENCTRL_H #define XENCTRL_H +#ifdef __cplusplus +extern "C" { +#endif + /* Tell the Xen public headers we are a user-space tools build. */ #ifndef __XEN_TOOLS__ #define __XEN_TOOLS__ 1 @@ -114,6 +118,15 @@ typedef struct xc_interface_core xc_inte typedef struct xc_interface_core xc_evtchn; typedef struct xc_interface_core xc_gnttab; typedef struct xc_interface_core xc_gntshr; + +enum xc_error_code { + XC_ERROR_NONE = 0, + XC_INTERNAL_ERROR = 1, + XC_INVALID_KERNEL = 2, + XC_INVALID_PARAM = 3, + XC_OUT_OF_MEMORY = 4, + /* new codes need to be added to xc_error_level_to_desc too */ +}; typedef enum xc_error_code xc_error_code; @@ -1618,16 +1631,6 @@ int xc_hvm_inject_trap( * LOGGING AND ERROR REPORTING */ - -enum xc_error_code { - XC_ERROR_NONE = 0, - XC_INTERNAL_ERROR = 1, - XC_INVALID_KERNEL = 2, - XC_INVALID_PARAM = 3, - XC_OUT_OF_MEMORY = 4, - /* new codes need to be added to xc_error_level_to_desc too */ -}; - #define XC_MAX_ERROR_MSG_LEN 1024 typedef struct xc_error { enum xc_error_code code; @@ -2236,4 +2239,8 @@ int xc_compression_uncompress_page(xc_in unsigned long compbuf_size, unsigned long *compbuf_pos, char *dest); +#ifdef __cplusplus +} +#endif + #endif /* XENCTRL_H */ diff -r 5af4f2ab06f3 -r c273ee1fc8ba tools/xenstore/xenstore.h --- a/tools/xenstore/xenstore.h Tue Jan 22 09:33:10 2013 +0100 +++ b/tools/xenstore/xenstore.h Wed Jan 23 11:18:49 2013 +0200 @@ -20,6 +20,10 @@ #ifndef XENSTORE_H #define XENSTORE_H +#ifdef __cplusplus +extern "C" { +#endif + #include <xenstore_lib.h> #define XBT_NULL 0 @@ -244,6 +248,11 @@ char *xs_debug_command(struct xs_handle void *data, unsigned int len); int xs_suspend_evtchn_port(int domid); + +#ifdef __cplusplus +} +#endif + #endif /* XENSTORE_H */ /* diff -r 5af4f2ab06f3 -r c273ee1fc8ba xen/include/public/arch-x86/hvm/save.h --- a/xen/include/public/arch-x86/hvm/save.h Tue Jan 22 09:33:10 2013 +0100 +++ b/xen/include/public/arch-x86/hvm/save.h Wed Jan 23 11:18:49 2013 +0200 @@ -269,15 +269,15 @@ struct hvm_hw_cpu_compat { }; static inline int _hvm_hw_fix_cpu(void *h) { - struct hvm_hw_cpu *new=h; - struct hvm_hw_cpu_compat *old=h; + struct hvm_hw_cpu *newcpu = (struct hvm_hw_cpu *)h; + struct hvm_hw_cpu_compat *old = (struct hvm_hw_cpu_compat *)h; /* If we copy from the end backwards, we should * be able to do the modification in-place */ - new->error_code=old->error_code; - new->pending_event=old->pending_event; - new->tsc=old->tsc; - new->msr_tsc_aux=0; + newcpu->error_code = old->error_code; + newcpu->pending_event = old->pending_event; + newcpu->tsc = old->tsc; + newcpu->msr_tsc_aux = 0; return 0; }
Jan Beulich
2013-Jan-23 10:09 UTC
[PATCH V2] libxc, libxenstore: make the headers C++-friendlier
>>> On 23.01.13 at 10:19, Razvan Cojocaru <rzvncj@gmail.com> wrote: > static inline int _hvm_hw_fix_cpu(void *h) { > - struct hvm_hw_cpu *new=h; > - struct hvm_hw_cpu_compat *old=h; > + struct hvm_hw_cpu *newcpu = (struct hvm_hw_cpu *)h; > + struct hvm_hw_cpu_compat *old = (struct hvm_hw_cpu_compat *)h; > > /* If we copy from the end backwards, we should > * be able to do the modification in-place */ > - new->error_code=old->error_code; > - new->pending_event=old->pending_event; > - new->tsc=old->tsc; > - new->msr_tsc_aux=0; > + newcpu->error_code = old->error_code; > + newcpu->pending_event = old->pending_event; > + newcpu->tsc = old->tsc; > + newcpu->msr_tsc_aux = 0; > > return 0; > }Actually I think this needs to be done differently anyway, as the way it currently is it isn''t even correct. In particular, I don''t think there''s anything keeping the compiler from re-ordering the reads and writes (gcc: without -fno-strict-aliasing), thus invalidating the purposeful backward processing. By means of using union hvm_hw_cpu_union { struct hvm_hw_cpu nat; struct hvm_hw_cpu_compat cmp; }; this can be avoided in a compatible manner (and the renaming can be done basically as a side effect). Sorry for not having noticed on the first run through. Jan
Apparently Analagous Threads
- [PATCH V3] libxc, libxenstore: make the headers C++-friendlier
- [patch] Add more xc_error_code values.
- [PATCH] add dom0 vcpu hotplug control
- [PATCH 2/3] Implement tsc adjust feature
- [PATCH] libvirt-auth: Provide a friendlier wrapper around virConnectAuthPtrDefault (RHBZ#1044014).