[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] How does hypervisor handle the hypercalls from guest OSes?
> I'm trying to encapsulate some operations into "hypercall" and pass
> the hypercall into hypervisor.
> But I cannot find out how the hypervisor to deal with hypercalls
> from guest OSes.
Hypercalls go from ring 1 (xenolinux kernel) to ring 0; they are
invoked by using "int $0x82".
You can see the "top half" (guest side) of the hypercall interface by
looking at the file
which includes a bunch of inline C functions like:
static inline int HYPERVISOR_mmu_update(mmu_update_t *req, int count)
__asm__ __volatile__ (
: "=a" (ret) : "0" (__HYPERVISOR_mmu_update),
"b" (req), "c" (count) : "memory" );
You can see the "bottom half" (xen side) of the hypercall interface
by looking at the files
; the former includes definitions of all the numbers used for the
various hypercalls while latter handles the int $0x82 and decides
which actual hypercall to invoke (by using hypervisor_call_table;
see the end of entry.S).
> I find a function "do_dom0_op" in xeno-1.2.bk/xen/common/dom0_ops.c.
> It looks like the function which would deal with hypercalls .
No; a dom0_op is just one of the hypercalls; it is the general method
used for control software (running in domain 0) to invoke various
operations within Xen.
Depending on what you're actually trying to do, adding a new dom0_op
rather than a new hypercall might be the right thing to do though.
> and I try to modify the code in do_dom0_op to handle my new
> hypercall, but I failed.
> can someone tell me how does hypervisor handle the hypercalls from
> guest OSes?
Hopefully the above description is of some use.
This SF.Net email is sponsored by Sleepycat Software
Learn developer strategies Cisco, Motorola, Ericsson & Lucent use to deliver
higher performing products faster, at low TCO.
Xen-devel mailing list