All of lore.kernel.org
 help / color / mirror / Atom feed
* Xen tools (libxs, xenstore) and C++
@ 2013-01-22 15:16 Razvan Cojocaru
  2013-01-22 15:26 ` Andrew Cooper
  0 siblings, 1 reply; 4+ messages in thread
From: Razvan Cojocaru @ 2013-01-22 15:16 UTC (permalink / raw)
  To: xen-devel@lists.xen.org

Hello,

I'd like to use xenctrl.h and a handful of other headers in a C++ 
application. The headers I'm interested now are xenctrl.h, 
xen/hvm/save.h, xen/mem_event.h and xenstore.h. Unfortunately, they're 
not C++-friendly.

Here's why:

1. None of the headers enclose their contents in:

#ifdef __cplusplus
extern "C" {
#endif

/* contents here */

#ifdef __cplusplus
}
#endif

2. xen/arch-x86/hvm/save.h uses the C++ keyword 'new' as a parameter 
name (quite a few times).

3. C++ (being type-safer) frowns upon such assignments as:

struct hvm_hw_cpu *newcpu=h; // h is void*

which should be explicitly written as:

struct hvm_hw_cpu *newcpu=(struct hvm_hw_cpu *)h;

4. xenctrl.h typedefs "enum xc_error_code xc_error_code;" _before_ "enum 
xc_error_code { /* ... */ }" has been defined, which C++ doesn't allow.

I'm also getting:

/usr/include/xen/mem_event.h:71:1: error: expected ‘;’ after union 
definition
/usr/include/xen/mem_event.h:71:1: error: expected ‘:’ before ‘;’ token

where the DEFINE_RING_TYPES(mem_event, mem_event_request_t, 
mem_event_response_t); macro is being expanded in mem_event.h.

Are there plans to have the userspace libraries be friendlier to C++?

Thanks,
Razvan Cojocaru

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-01-22 15:36 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-22 15:16 Xen tools (libxs, xenstore) and C++ Razvan Cojocaru
2013-01-22 15:26 ` Andrew Cooper
2013-01-22 15:35   ` Razvan Cojocaru
2013-01-22 15:36     ` Razvan Cojocaru

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.