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 "linux/slab.h"
   8#include "kern_util.h"
   9#include "os.h"
  10#include "skas.h"
  11
  12void (*pm_power_off)(void);
  13
  14static void kill_off_processes(void)
  15{
  16        if (proc_mm)
  17                /*
  18                 * FIXME: need to loop over userspace_pids
  19                 */
  20                os_kill_ptraced_process(userspace_pid[0], 1);
  21        else {
  22                struct task_struct *p;
  23                int pid;
  24
  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
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.