mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
docs/html/: Annotations for two hypercalls
Add annotations for a couple of the hypercalls: HYPERVISOR_set_trap_table HYPERVISOR_mmu_update We do this by * annotating the list of #defines for hypercall numbers * annotating the list of error values * providing a function prototype for the systematically-named functions The header generator does the rest. This exercise revealed a couple of infelicities: * In the actual source code, do_mmu_update is defined to return an int and do_set_trap_table a long. However both functions return either -Efoo (on error) or 0 for success. * The error numbers are defined only in the private header file xen/include/xen/errno.h and then only with names which will typically clash with other projects. It would be nice to include a public version of this header which defines XEN_E*. But for now we run xen-headers on errno.h too. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com> Acked-by: Ian Campbell <ian.campbell@citrix.com> Committed-by: Ian Jackson <Ian.Jackson@eu.citrix.com>
This commit is contained in:
1 parent
445e84f517
commit
262e118a37
4 files changed
+21
-3
No files matched your search
+1
-1
@@ -159,7 +159,7 @@ html/hypercall/stamp:
|
||||
./xen-headers -O $(@D) \
|
||||
-T 'arch-x86_64 - Xen public headers' \
|
||||
-X arch-ia64 -X arch-x86_32 -X xen-x86_32 \
|
||||
../xen include/public
|
||||
../xen include/public include/xen/errno.h
|
||||
touch $@
|
||||
|
||||
txt/%.txt: %.txt
|
||||
|
||||
@@ -81,8 +81,14 @@ typedef unsigned long xen_pfn_t;
|
||||
|
||||
typedef unsigned long xen_ulong_t;
|
||||
|
||||
/*
|
||||
* ` enum neg_errnoval
|
||||
* ` HYPERVISOR_set_trap_table(const struct trap_info traps[]);
|
||||
* `
|
||||
*/
|
||||
/*
|
||||
* Send an array of these to HYPERVISOR_set_trap_table().
|
||||
* Terminate the array with a sentinel entry, with traps[].address==0.
|
||||
* The privilege level specifies which modes may enter a trap via a software
|
||||
* interrupt. On x86/64, since rings 1 and 2 are unavailable, we allocate
|
||||
* privilege levels as follows:
|
||||
|
||||
@@ -55,6 +55,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
|
||||
* HYPERCALLS
|
||||
*/
|
||||
|
||||
/* ` enum hypercall_num { // __HYPERVISOR_* => HYPERVISOR_*() */
|
||||
|
||||
#define __HYPERVISOR_set_trap_table 0
|
||||
#define __HYPERVISOR_mmu_update 1
|
||||
#define __HYPERVISOR_set_gdt 2
|
||||
@@ -105,6 +107,8 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
|
||||
#define __HYPERVISOR_arch_6 54
|
||||
#define __HYPERVISOR_arch_7 55
|
||||
|
||||
/* ` } */
|
||||
|
||||
/*
|
||||
* HYPERCALL COMPATIBILITY.
|
||||
*/
|
||||
@@ -163,8 +167,11 @@ DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);
|
||||
#define NR_VIRQS 24
|
||||
|
||||
/*
|
||||
* HYPERVISOR_mmu_update(reqs, count, pdone, foreigndom)
|
||||
*
|
||||
* ` enum neg_errnoval
|
||||
* ` HYPERVISOR_mmu_update(const struct mmu_update reqs[],
|
||||
* ` unsigned count, unsigned *done_out,
|
||||
* ` unsigned foreigndom)
|
||||
* `
|
||||
* @reqs is an array of mmu_update_t structures ((ptr, val) pairs).
|
||||
* @count is the length of the above array.
|
||||
* @pdone is an output parameter indicating number of completed operations
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef _I386_ERRNO_H
|
||||
#define _I386_ERRNO_H
|
||||
|
||||
/* ` enum neg_errnoval { [ -Efoo for each Efoo in the list below ] } */
|
||||
/* ` enum errnoval { */
|
||||
|
||||
#define EPERM 1 /* Operation not permitted */
|
||||
#define ENOENT 2 /* No such file or directory */
|
||||
#define ESRCH 3 /* No such process */
|
||||
@@ -129,4 +132,6 @@
|
||||
#define ENOMEDIUM 123 /* No medium found */
|
||||
#define EMEDIUMTYPE 124 /* Wrong medium type */
|
||||
|
||||
/* ` } */
|
||||
|
||||
#endif
|
||||