[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] docs: Document some more hypercalls
On Mon, 2012-03-26 at 18:06 +0100, Ian Jackson wrote: > Some of these could probably do with some review from people who know > what these hypercalls actually do. > > Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > > --- > xen/include/public/arch-x86/xen.h | 30 ++++++++++++++++++++++++++++++ > xen/include/public/arch-x86_64.h | 16 ++++++++++++++++ > xen/include/public/platform.h | 4 ++++ > 3 files changed, 50 insertions(+), 0 deletions(-) > > diff --git a/xen/include/public/arch-x86/xen.h > b/xen/include/public/arch-x86/xen.h > index d663cef..1c186d7 100644 > --- a/xen/include/public/arch-x86/xen.h > +++ b/xen/include/public/arch-x86/xen.h > @@ -65,6 +65,11 @@ typedef unsigned long xen_pfn_t; > * SEGMENT DESCRIPTOR TABLES > */ > /* > + * ` enum neg_errnoval > + * ` HYPERVISOR_set_gdt(const xen_pfn_t frames[], unsigned int entries); > + * ` > + */ > +/* > * A number of GDT entries are reserved by Xen. These are not situated at the > * start of the GDT because some stupid OSes export hard-coded selector > values > * in their ABI. These hard-coded values are always near the start of the > GDT, > @@ -83,6 +88,13 @@ typedef unsigned long xen_ulong_t; > > /* > * ` enum neg_errnoval > + * ` HYPERVISOR_stack_switch(unsigned long ss, unsigned long esp); > + * ` > + * Sets the stack segment and pointer for the current vcpu. > + */ > + > +/* > + * ` enum neg_errnoval > * ` HYPERVISOR_set_trap_table(const struct trap_info traps[]); > * ` > */ > @@ -183,6 +195,24 @@ typedef struct arch_shared_info arch_shared_info_t; > #endif /* !__ASSEMBLY__ */ > > /* > + * ` enum neg_errnoval > + * ` HYPERVISOR_fpu_taskswitch(int set); > + * ` > + * Sets (if set!=0) or clears (if set==0) CR0.TS. > + */ > + > +/* > + * ` enum neg_errnoval > + * ` HYPERVISOR_set_debugreg(int regno, unsigned long value); > + * > + * ` unsigned long > + * ` HYPERVISOR_get_debugreg(int regno); > + * For 0<=reg<=7, returns the debug register value. Specifically these are the 8 architectural x86 debug registers %db0-7, this is an x86 only hypercall > + * For other values of reg, returns ((unsigned long)-EINVAL). > + * (Unfortunately, this interface is defective.) I guess you say this because you can't distinguish -EINVAL from a valid value. Since these are architectural registers this isn't as bad as it could be I suppose, you would never expect to probe for these registers using the EINVAL return code. > + */ > + > +/* > * Prefix forces emulation of some non-trapping instructions. > * Currently only CPUID. > */ > diff --git a/xen/include/public/arch-x86_64.h > b/xen/include/public/arch-x86_64.h > index fbb2639..409805f 100644 > --- a/xen/include/public/arch-x86_64.h > +++ b/xen/include/public/arch-x86_64.h > @@ -25,3 +25,19 @@ > */ > > #include "arch-x86/xen.h" > + > +/* > + * ` enum neg_errnoval > + * ` HYPERVISOR_set_callbacks(unsigned long event_selector, > + * ` unsigned long event_address, > + * ` unsigned long failsafe_selector, > + * ` unsigned long failsafe_address); > + * ` > + * Register for callbacks on events. When an event (from an event > + * channel) occurs, event_address is used as the value of eip. I think this interface is somewhat deprecated in favour of __HYPERVISOR_callback_op. > + * > + * A similar callback occurs if the segment selectors are invalid. > + * failsafe_address is used as the value of eip. > + * > + * On x86_64, event_selector and failsafe_selector are ignored (???). Right, x86_64 doesn't really have selectors, just a vestigial remnant of selectors. > + */ > diff --git a/xen/include/public/platform.h b/xen/include/public/platform.h > index 7b8d6e8..68e4177 100644 > --- a/xen/include/public/platform.h > +++ b/xen/include/public/platform.h > @@ -490,6 +490,10 @@ struct xenpf_mem_hotadd > uint32_t flags; > }; > > +/* > + * ` enum neg_errnoval > + * ` HYPERVISOR_platform_op(const struct xen_platform_op*); > + */ > struct xen_platform_op { > uint32_t cmd; > uint32_t interface_version; /* XENPF_INTERFACE_VERSION */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |