summaryrefslogtreecommitdiffstats
path: root/drivers/lguest/lg.h
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-01-07 14:05:27 +0100
committerRusty Russell <rusty@rustcorp.com.au>2008-01-30 12:50:08 +0100
commit73044f05a4ac65f2df42753e9566444b9d2a660f (patch)
tree80a3e1d1bda31a769554a8c51f8c189ccec0b9f8 /drivers/lguest/lg.h
parentlguest: make write() operation smp aware (diff)
downloadlinux-73044f05a4ac65f2df42753e9566444b9d2a660f.tar.xz
linux-73044f05a4ac65f2df42753e9566444b9d2a660f.zip
lguest: make hypercalls use the vcpu struct
this patch changes do_hcall() and do_async_hcall() interfaces (and obviously their callers) to get a vcpu struct. Again, a vcpu services the hypercall, not the whole guest Signed-off-by: Glauber de Oliveira Costa <gcosta@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Diffstat (limited to 'drivers/lguest/lg.h')
-rw-r--r--drivers/lguest/lg.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/lguest/lg.h b/drivers/lguest/lg.h
index bfca2716ad11..a4ebd415fa27 100644
--- a/drivers/lguest/lg.h
+++ b/drivers/lguest/lg.h
@@ -43,6 +43,10 @@ struct lguest;
struct lg_cpu {
unsigned int id;
struct lguest *lg;
+
+ /* If a hypercall was asked for, this points to the arguments. */
+ struct hcall_args *hcall;
+ u32 next_hcall;
};
/* The private info the thread maintains about the guest. */
@@ -65,13 +69,9 @@ struct lguest
u32 cr2;
int halted;
int ts;
- u32 next_hcall;
u32 esp1;
u8 ss1;
- /* If a hypercall was asked for, this points to the arguments. */
- struct hcall_args *hcall;
-
/* Do we need to stop what we're doing and return to userspace? */
int break_out;
wait_queue_head_t break_wq;
@@ -178,9 +178,9 @@ void page_table_guest_data_init(struct lguest *lg);
void lguest_arch_host_init(void);
void lguest_arch_host_fini(void);
void lguest_arch_run_guest(struct lg_cpu *cpu);
-void lguest_arch_handle_trap(struct lguest *lg);
-int lguest_arch_init_hypercalls(struct lguest *lg);
-int lguest_arch_do_hcall(struct lguest *lg, struct hcall_args *args);
+void lguest_arch_handle_trap(struct lg_cpu *cpu);
+int lguest_arch_init_hypercalls(struct lg_cpu *cpu);
+int lguest_arch_do_hcall(struct lg_cpu *cpu, struct hcall_args *args);
void lguest_arch_setup_regs(struct lguest *lg, unsigned long start);
/* <arch>/switcher.S: */
@@ -191,7 +191,7 @@ int lguest_device_init(void);
void lguest_device_remove(void);
/* hypercalls.c: */
-void do_hypercalls(struct lguest *lg);
+void do_hypercalls(struct lg_cpu *cpu);
void write_timestamp(struct lguest *lg);
/*L:035