linux/arch/um/kernel/reboot.c
<<
>>
Prefs
   1/* 
   2 * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
   3 * Licensed under the GPL
   4 */
   5
   6#include "linux/sched.h"
   7#include "kern_util.h"
   8#include "os.h"
   9#include "skas.h"
  10
  11void (*pm_power_off)(void);
  12
  13static void kill_off_processes(void)
  14{
  15        if (proc_mm)
  16                /*
  17                 * FIXME: need to loop over userspace_pids
  18                 */
  19                os_kill_ptraced_process(userspace_pid[0], 1);
  20        else {
  21                struct task_struct *p;
  22                int pid, me;
  23
  24                me = os_getpid();
  25                for_each_process(p) {
  26                        if (p->mm == NULL)
  27                                continue;
  28
  29                        pid = p->mm->context.id.u.pid;
  30                        os_kill_ptraced_process(pid, 1);
  31                }
  32        }
  33}
  34
  35void uml_cleanup(void)
  36{
  37        kmalloc_ok = 0;
  38        do_uml_exitcalls();
  39        kill_off_processes();
  40}
  41
  42void machine_restart(char * __unused)
  43{
  44        uml_cleanup();
  45        reboot_skas();
  46}
  47
  48void machine_power_off(void)
  49{
  50        uml_cleanup();
  51        halt_skas();
  52}
  53
  54void machine_halt(void)
  55{
  56        machine_power_off();
  57}
  58