From 60572c972b8dbfbfff91c3bf0773838381c5a8c4 Mon Sep 17 00:00:00 2001 From: David Vrabel Date: Mon, 9 Jun 2014 16:41:10 +0100 Subject: [PATCH] tools/libxc: add DECLARE_HYPERCALL_BUFFER_SHADOW() DECLARE_HYPERCALL_BUFFER_SHADOW() is like DECLARE_HYPERCALL_BUFFER() except it is backed by an already allocated hypercall buffer. Signed-off-by: David Vrabel Acked-by: Ian Campbell --- tools/libxc/xenctrl.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index 400f0dfe43..b55d85728c 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -265,6 +265,24 @@ typedef struct xc_hypercall_buffer xc_hypercall_buffer_t; HYPERCALL_BUFFER_INIT_NO_BOUNCE \ } +/* + * Like DECLARE_HYPERCALL_BUFFER() but using an already allocated + * hypercall buffer, _hbuf. + * + * Useful when a hypercall buffer is passed to a function and access + * via the user pointer is required. + * + * See DECLARE_HYPERCALL_BUFFER_ARGUMENT() if the user pointer is not + * required. + */ +#define DECLARE_HYPERCALL_BUFFER_SHADOW(_type, _name, _hbuf) \ + _type *_name = _hbuf->hbuf; \ + xc_hypercall_buffer_t XC__HYPERCALL_BUFFER_NAME(_name) = { \ + .hbuf = (void *)-1, \ + .param_shadow = _hbuf, \ + HYPERCALL_BUFFER_INIT_NO_BOUNCE \ + } + /* * Declare the necessary data structure to allow a hypercall buffer * passed as an argument to a function to be used in the normal way. -- 2.30.2