|
|
|
|
|
|
|
|
|
|
xen-devel
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 addresses
libxc 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
|
|
|
|
|