root/arch/um/kernel/skas/process.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. start_kernel_proc
  2. start_uml
  3. current_stub_stack

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
   4  */
   5 
   6 #include <linux/init.h>
   7 #include <linux/sched/mm.h>
   8 #include <linux/sched/task_stack.h>
   9 #include <linux/sched/task.h>
  10 
  11 #include <as-layout.h>
  12 #include <kern.h>
  13 #include <os.h>
  14 #include <skas.h>
  15 
  16 extern void start_kernel(void);
  17 
  18 static int __init start_kernel_proc(void *unused)
  19 {
  20         int pid;
  21 
  22         block_signals_trace();
  23         pid = os_getpid();
  24 
  25         cpu_tasks[0].pid = pid;
  26         cpu_tasks[0].task = current;
  27 
  28         start_kernel();
  29         return 0;
  30 }
  31 
  32 extern int userspace_pid[];
  33 
  34 extern char cpu0_irqstack[];
  35 
  36 int __init start_uml(void)
  37 {
  38         stack_protections((unsigned long) &cpu0_irqstack);
  39         set_sigstack(cpu0_irqstack, THREAD_SIZE);
  40 
  41         init_new_thread_signals();
  42 
  43         init_task.thread.request.u.thread.proc = start_kernel_proc;
  44         init_task.thread.request.u.thread.arg = NULL;
  45         return start_idle_thread(task_stack_page(&init_task),
  46                                  &init_task.thread.switch_buf);
  47 }
  48 
  49 unsigned long current_stub_stack(void)
  50 {
  51         if (current->mm == NULL)
  52                 return 0;
  53 
  54         return current->mm->context.id.stack;
  55 }

/* [<][>][^][v][top][bottom][index][help] */