[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/3] tools/libxc: Make the mem_access APIs generic
On 11/04/14 04:49, Aravindh Puthiyaparambil wrote: > This patch does the following: > 1. Add new xc_[sg]et_mem_access APIs. > 2. Remove xc_hvm_[sg]et_mem_access() APIs. > > Signed-off-by: Aravindh Puthiyaparambil <aravindp@xxxxxxxxx> > Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > Cc: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx> > Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> > > --- > Changes from the RFC version of the patch: > 1. Remove xc_mem_access_memop() wrapper. > 2. Remove xc_hvm_[sg]et_mem_access() APIs. > > Thanks, > Aravindh > > diff --git a/tools/libxc/xc_mem_access.c b/tools/libxc/xc_mem_access.c > index a50c145..0277ab3 100644 > --- a/tools/libxc/xc_mem_access.c > +++ b/tools/libxc/xc_mem_access.c > @@ -22,7 +22,7 @@ > */ > > #include "xc_private.h" > - > +#include <xen/memory.h> > > int xc_mem_access_enable(xc_interface *xch, domid_t domain_id, > uint32_t *port) > @@ -47,12 +47,53 @@ int xc_mem_access_disable(xc_interface *xch, domid_t > domain_id) > NULL); > } > > + Spurious whitespace change. > int xc_mem_access_resume(xc_interface *xch, domid_t domain_id, unsigned long > gfn) What is this gfn parameter doing? It isn't used in the hypercall. > { > - return xc_mem_event_memop(xch, domain_id, > - XENMEM_access_op_resume, > - XENMEM_access_op, > - gfn, NULL); > + xen_mem_access_op_t mao; > + > + memset(&mao, 0, sizeof(mao)); > + mao.op = XENMEM_access_op_resume; > + mao.domid = domain_id; Please use structure initialisation for this. xen_mem_access_op_t mao = { .op = XENMEM_access_op_resume, .domid = domain_id }; > + > + return do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao)); > +} > + > +int xc_set_mem_access(xc_interface *xch, > + domid_t domain_id, > + xenmem_access_t access, > + uint64_t first_pfn, > + uint32_t nr) > +{ > + xen_mem_access_op_t mao; > + > + mao.op = XENMEM_access_op_set_access; > + mao.domid = domain_id; > + mao.access = access; > + mao.pfn = first_pfn; > + mao.nr = nr; > + > + return do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao)); > +} > + > +int xc_get_mem_access(xc_interface *xch, > + domid_t domain_id, > + uint64_t pfn, > + xenmem_access_t *access) > +{ > + xen_mem_access_op_t mao; > + int rc; > + > + mao.op = XENMEM_access_op_get_access; > + mao.domid = domain_id; > + mao.pfn = pfn; > + > + rc = do_memory_op(xch, XENMEM_access_op, &mao, sizeof(mao)); > + > + if ( !rc ) > + *access = mao.access; Surely you should only write access back in the case of success? ~Andrew _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |