[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 2/8] libxc: Provide access to internal handles
In order to support auditing of qemu depriv, my audit tool wants to know the fd of a privcmd handle on which it can easily make hypercalls. xencall provides such a handle, but has no cooked facilities for making hypercalls. So I open a libxc handle. That means I need to get the privcmd fd out of the libxc handle. ISTM that it is best to do this by providing an interface to get the underlying library handles for a libxc handle. This kind of interface is quite common elsewhere and has not caused problems. libxc is not a stable API so the downside risk of providing this access is not significant. Signed-off-by: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> Acked-by: Wei Liu <wei.liu2@xxxxxxxxxx> --- v2: Actually provide the fmem and dmod handle functions that the declarations in the .h file promise. --- tools/libxc/include/xenctrl.h | 10 ++++++++++ tools/libxc/xc_private.c | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index 408fa1c..d7733aa 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -183,6 +183,16 @@ enum xc_open_flags { */ int xc_interface_close(xc_interface *xch); +/** + * Return the handles which xch has opened and will use for + * hypercalls, foreign memory accesses and device model operations. + * These may be used with the corresponding libraries so long as the + * xch itself remains open. + */ +struct xencall_handle *xc_interface_xcall_handle(xc_interface *xch); +struct xenforeignmemory_handle *xc_interface_fmem_handle(xc_interface *xch); +struct xendevicemodel_handle *xc_interface_dmod_handle(xc_interface *xch); + /* * HYPERCALL SAFE MEMORY BUFFER * diff --git a/tools/libxc/xc_private.c b/tools/libxc/xc_private.c index fcda981..5a2efe7 100644 --- a/tools/libxc/xc_private.c +++ b/tools/libxc/xc_private.c @@ -104,6 +104,21 @@ int xc_interface_close(xc_interface *xch) return rc; } +xencall_handle *xc_interface_xcall_handle(xc_interface *xch) +{ + return xch->xcall; +} + +struct xenforeignmemory_handle *xc_interface_fmem_handle(xc_interface *xch) +{ + return xch->fmem; +} + +struct xendevicemodel_handle *xc_interface_dmod_handle(xc_interface *xch) +{ + return xch->dmod; +} + static pthread_key_t errbuf_pkey; static pthread_once_t errbuf_pkey_once = PTHREAD_ONCE_INIT; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |