[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v9 3/4] libxc: Provide set_xen_guest_handle_offset macro
Add set_xen_guest_handle_offset() macro that can be used for setting xen_guest_handle to an offset into hypercall buffer. Signed-off-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- Changes in v9: * set_xen_guest_handle_offset() takes offset in terms of number of elements * Drop unnecessary '#undef set_xen_guest_handle_offset' tools/libxc/include/xenctrl.h | 14 +++++++++++--- 1 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index a404855..4b3c26e 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -322,16 +322,24 @@ typedef struct xc_hypercall_buffer xc_hypercall_buffer_t; * Set a xen_guest_handle in a type safe manner, ensuring that the * data pointer has been correctly allocated. */ -#undef set_xen_guest_handle -#define set_xen_guest_handle(_hnd, _val) \ +#define set_xen_guest_handle_impl(_hnd, _val, _byte_off) \ do { \ xc_hypercall_buffer_t _hcbuf_hnd1; \ typeof(XC__HYPERCALL_BUFFER_NAME(_val)) *_hcbuf_hnd2 = \ HYPERCALL_BUFFER(_val); \ (void) (&_hcbuf_hnd1 == _hcbuf_hnd2); \ - set_xen_guest_handle_raw(_hnd, (_hcbuf_hnd2)->hbuf); \ + set_xen_guest_handle_raw(_hnd, \ + (_hcbuf_hnd2)->hbuf + (_byte_off)); \ } while (0) +#undef set_xen_guest_handle +#define set_xen_guest_handle(_hnd, _val) \ + set_xen_guest_handle_impl(_hnd, _val, 0) + +#define set_xen_guest_handle_offset(_hnd, _val, _off) \ + set_xen_guest_handle_impl(_hnd, _val, \ + ((sizeof(*_val)*(_off)))) + /* Use with set_xen_guest_handle in place of NULL */ extern xc_hypercall_buffer_t XC__HYPERCALL_BUFFER_NAME(HYPERCALL_BUFFER_NULL); -- 1.7.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |