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/spinlock.h>
   8#include <linux/slab.h>
   9#include <linux/oom.h>
  10#include <kern_util.h>
  11#include <os.h>
  12#include <skas.h>
  13
  14void (*pm_power_off)(void);
  15EXPORT_SYMBOL(pm_power_off);
  16
  17static void kill_off_processes(void)
  18{
  19        struct task_struct *p;
  20        int pid;
  21
  22        read_lock(&tasklist_lock);
  23        for_each_process(p) {
  24                struct task_struct *t;
  25
  26                t = find_lock_task_mm(p);
  27                if (!t)
  28                        continue;
  29                pid = t->mm->context.id.u.pid;
  30                task_unlock(t);
  31                os_kill_ptraced_process(pid, 1);
  32        }
  33        read_unlock(&tasklist_lock);
  34}
  35
  36void uml_cleanup(void)
  37{
  38        kmalloc_ok = 0;
  39        do_uml_exitcalls();
  40        kill_off_processes();
  41}
  42
  43void machine_restart(char * __unused)
  44{
  45        uml_cleanup();
  46        reboot_skas();
  47}
  48
  49void machine_power_off(void)
  50{
  51        uml_cleanup();
  52        halt_skas();
  53}
  54
  55void machine_halt(void)
  56{
  57        machine_power_off();
  58}
  59