|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] passing hypercall parameters by pointer
On Aug 19, 2005, at 9:35 AM, Keir Fraser wrote: On 19 Aug 2005, at 14:57, Hollis Blanchard wrote:- replace libxc calls to mlock() with register_this_address() (which could be a privcmd ioctl)Yep. I think libxc would request via a privcmd ioctl. The kernel can extend the parameter-passing region, or allocate a subsection of the existing region, and mmap it into user space. It would also return to libxc the range of parameter-passing addresses that have been allocated to it.- libxc ignorantly creates its structures with userspace addresseslibxc would create structs with parameter-passing addresses. Does "parameter-passing addresses" mean offsets inside the parameter passing space? I think pseudocode is going to be more effective than English here. Let's take DOM0_PERFCCONTROL as an example:
main() {
xc_perfc_desc_t *desc = malloc();
mlock(desc); // <------------- [1]
xc_perfc_control(desc);
}
xc_perfc_control(xc_perfc_desc_t *desc) {
dom0_op_t dop;
dop.cmd = DOM0_PERFCCONTROL;
dop.u.perfccontrol.desc = desc; // <------------ [2]
do_dom0_op(&dop);
}
Even if you replace malloc/mlock at [1] with a call that maps
"parameter passing" space into this process, what address will you put
in the struct at [2]? That would have to be an offset within the
parameter passing space, right?
-- Hollis Blanchard IBM Linux Technology Center _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |