aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/lguest/lg.h
diff options
context:
space:
mode:
authorGlauber de Oliveira Costa <gcosta@redhat.com>2008-01-07 08:05:34 -0500
committerRusty Russell <rusty@rustcorp.com.au>2008-01-30 06:50:12 -0500
commit66686c2ab08feb721ca4d98285fba64acdf6017f (patch)
treebae76c0e0dc78809abc83b8f0dc9f84dca702de0 /drivers/lguest/lg.h
parentfc708b3e407dfd2e12ba9a6cf35bd0bffad1796d (diff)
lguest: per-vcpu lguest task management
lguest uses tasks to control its running behaviour (like sending breaks, controlling halted state, etc). In a per-vcpu environment, each vcpu will have its own underlying task. So this patch makes the infrastructure for that possible 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.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/lguest/lg.h b/drivers/lguest/lg.h
index d08b85342b92..e7123fa6127f 100644
--- a/drivers/lguest/lg.h
+++ b/drivers/lguest/lg.h
@@ -43,6 +43,8 @@ struct lguest;
43struct lg_cpu { 43struct lg_cpu {
44 unsigned int id; 44 unsigned int id;
45 struct lguest *lg; 45 struct lguest *lg;
46 struct task_struct *tsk;
47 struct mm_struct *mm; /* == tsk->mm, but that becomes NULL on exit */
46 48
47 /* At end of a page shared mapped over lguest_pages in guest. */ 49 /* At end of a page shared mapped over lguest_pages in guest. */
48 unsigned long regs_page; 50 unsigned long regs_page;
@@ -55,6 +57,11 @@ struct lg_cpu {
55 /* Virtual clock device */ 57 /* Virtual clock device */
56 struct hrtimer hrt; 58 struct hrtimer hrt;
57 59
60 /* Do we need to stop what we're doing and return to userspace? */
61 int break_out;
62 wait_queue_head_t break_wq;
63 int halted;
64
58 /* Pending virtual interrupts */ 65 /* Pending virtual interrupts */
59 DECLARE_BITMAP(irqs_pending, LGUEST_IRQS); 66 DECLARE_BITMAP(irqs_pending, LGUEST_IRQS);
60 67
@@ -65,8 +72,6 @@ struct lg_cpu {
65struct lguest 72struct lguest
66{ 73{
67 struct lguest_data __user *lguest_data; 74 struct lguest_data __user *lguest_data;
68 struct task_struct *tsk;
69 struct mm_struct *mm; /* == tsk->mm, but that becomes NULL on exit */
70 struct lg_cpu cpus[NR_CPUS]; 75 struct lg_cpu cpus[NR_CPUS];
71 unsigned int nr_cpus; 76 unsigned int nr_cpus;
72 77
@@ -76,15 +81,10 @@ struct lguest
76 void __user *mem_base; 81 void __user *mem_base;
77 unsigned long kernel_address; 82 unsigned long kernel_address;
78 u32 cr2; 83 u32 cr2;
79 int halted;
80 int ts; 84 int ts;
81 u32 esp1; 85 u32 esp1;
82 u8 ss1; 86 u8 ss1;
83 87
84 /* Do we need to stop what we're doing and return to userspace? */
85 int break_out;
86 wait_queue_head_t break_wq;
87
88 /* Bitmap of what has changed: see CHANGED_* above. */ 88 /* Bitmap of what has changed: see CHANGED_* above. */
89 int changed; 89 int changed;
90 struct lguest_pages *last_pages; 90 struct lguest_pages *last_pages;