diff options
Diffstat (limited to 'arch/um/kernel/reboot.c')
-rw-r--r-- | arch/um/kernel/reboot.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/arch/um/kernel/reboot.c b/arch/um/kernel/reboot.c index 4a0def32e323..f3bd18bbf07f 100644 --- a/arch/um/kernel/reboot.c +++ b/arch/um/kernel/reboot.c | |||
@@ -9,13 +9,30 @@ | |||
9 | #include "kern_util.h" | 9 | #include "kern_util.h" |
10 | #include "kern.h" | 10 | #include "kern.h" |
11 | #include "os.h" | 11 | #include "os.h" |
12 | #include "mode.h" | 12 | #include "skas.h" |
13 | 13 | ||
14 | void (*pm_power_off)(void); | 14 | void (*pm_power_off)(void); |
15 | 15 | ||
16 | static void kill_off_processes(void) | 16 | static void kill_off_processes(void) |
17 | { | 17 | { |
18 | kill_off_processes_skas(); | 18 | if(proc_mm) |
19 | /* | ||
20 | * FIXME: need to loop over userspace_pids | ||
21 | */ | ||
22 | os_kill_ptraced_process(userspace_pid[0], 1); | ||
23 | else { | ||
24 | struct task_struct *p; | ||
25 | int pid, me; | ||
26 | |||
27 | me = os_getpid(); | ||
28 | for_each_process(p){ | ||
29 | if(p->mm == NULL) | ||
30 | continue; | ||
31 | |||
32 | pid = p->mm->context.skas.id.u.pid; | ||
33 | os_kill_ptraced_process(pid, 1); | ||
34 | } | ||
35 | } | ||
19 | } | 36 | } |
20 | 37 | ||
21 | void uml_cleanup(void) | 38 | void uml_cleanup(void) |