diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-01-07 08:05:34 -0500 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2008-01-30 06:50:12 -0500 |
commit | 66686c2ab08feb721ca4d98285fba64acdf6017f (patch) | |
tree | bae76c0e0dc78809abc83b8f0dc9f84dca702de0 /drivers/lguest/lg.h | |
parent | fc708b3e407dfd2e12ba9a6cf35bd0bffad1796d (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.h | 14 |
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; | |||
43 | struct lg_cpu { | 43 | struct 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 { | |||
65 | struct lguest | 72 | struct 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; |