jbd: clean up journal_try_to_free_buffers()
[safe/jmp/linux-2.6] / include / linux / lguest.h
index d4d94a1..7bc1440 100644 (file)
@@ -4,6 +4,7 @@
 #define _LINUX_LGUEST_H
 
 #ifndef __ASSEMBLY__
+#include <linux/time.h>
 #include <asm/irq.h>
 #include <asm/lguest_hcall.h>
 
@@ -11,8 +12,8 @@
 #define LG_CLOCK_MAX_DELTA     ULONG_MAX
 
 /*G:032 The second method of communicating with the Host is to via "struct
- * lguest_data".  The Guest's very first hypercall is to tell the Host where
- * this is, and then the Guest and Host both publish information in it. :*/
+ * lguest_data".  Once the Guest's initialization hypercall tells the Host where
+ * this is, the Guest and Host both publish information in it. :*/
 struct lguest_data
 {
        /* 512 == enabled (same as eflags in normal hardware).  The Guest
@@ -29,6 +30,10 @@ struct lguest_data
        /* Wallclock time set by the Host. */
        struct timespec time;
 
+       /* Interrupt pending set by the Host.  The Guest should do a hypercall
+        * if it re-enables interrupts and sees this set (to X86_EFLAGS_IF). */
+       int irq_pending;
+
        /* Async hypercall ring.  Instead of directly making hypercalls, we can
         * place them in here for processing the next time the Host wants.
         * This batching can be quite efficient. */
@@ -36,19 +41,23 @@ struct lguest_data
        /* 0xFF == done (set by Host), 0 == pending (set by Guest). */
        u8 hcall_status[LHCALL_RING_SIZE];
        /* The actual registers for the hypercalls. */
-       struct hcall_ring hcalls[LHCALL_RING_SIZE];
+       struct hcall_args hcalls[LHCALL_RING_SIZE];
 
 /* Fields initialized by the Host at boot: */
        /* Memory not to try to access */
        unsigned long reserve_mem;
-       /* ID of this Guest (used by network driver to set ethernet address) */
-       u16 guestid;
        /* KHz for the TSC clock. */
        u32 tsc_khz;
+       /* Page where the top-level pagetable is */
+       unsigned long pgdir;
 
 /* Fields initialized by the Guest at boot: */
        /* Instruction range to suppress interrupts even if enabled */
        unsigned long noirq_start, noirq_end;
+       /* Address above which page tables are all identical. */
+       unsigned long kernel_address;
+       /* The vector to try to use for system calls (0x40 or 0x80). */
+       unsigned int syscall_vec;
 };
 extern struct lguest_data lguest_data;
 #endif /* __ASSEMBLY__ */