docs/html/: Annotations for two hypercalls
authorIan Jackson <ian.jackson@eu.citrix.com>
Tue, 29 Nov 2011 15:48:07 +0000 (15:48 +0000)
committerIan Jackson <ian.jackson@eu.citrix.com>
Tue, 29 Nov 2011 15:48:07 +0000 (15:48 +0000)
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>
docs/Makefile
xen/include/public/arch-x86/xen.h
xen/include/public/xen.h
xen/include/xen/errno.h

index 92ecb20e8f09ae1dc8e9fc0c2033e28b524528a7..ace60bacda93ed79f802f55628c31b649f8870d9 100644 (file)
@@ -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
index 79ec633725ccc824e9c26f82cd57cdb4431d0ae8..d663cefb143dd394030ac690c99011840421e339 100644 (file)
@@ -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:
index fde9fa5091530be3ca3045453487fef34c612c7a..f2c9e6fc97d4b19416734c87482718945a9a0159 100644 (file)
@@ -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
index 7cf599f4de505f392ecfdacf00d789793708c3f1..39147beee1a33bb91361e79e726fbd713cda3739 100644 (file)
@@ -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 */
 #define        ENOMEDIUM       123     /* No medium found */
 #define        EMEDIUMTYPE     124     /* Wrong medium type */
 
+/* ` } */
+
 #endif