📄 process.c
字号:
/* * Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) * Licensed under the GPL */#include "linux/init.h"#include "linux/sched.h"#include "as-layout.h"#include "os.h"#include "skas.h"int new_mm(unsigned long stack){ int fd; fd = os_open_file("/proc/mm", of_cloexec(of_write(OPENFLAGS())), 0); if (fd < 0) return fd; if (skas_needs_stub) map_stub_pages(fd, STUB_CODE, STUB_DATA, stack); return fd;}extern void start_kernel(void);static int __init start_kernel_proc(void *unused){ int pid; block_signals(); pid = os_getpid(); cpu_tasks[0].pid = pid; cpu_tasks[0].task = current;#ifdef CONFIG_SMP cpu_online_map = cpumask_of_cpu(0);#endif start_kernel(); return 0;}extern int userspace_pid[];extern char cpu0_irqstack[];int __init start_uml(void){ stack_protections((unsigned long) &cpu0_irqstack); set_sigstack(cpu0_irqstack, THREAD_SIZE); if (proc_mm) userspace_pid[0] = start_userspace(0); init_new_thread_signals(); init_task.thread.request.u.thread.proc = start_kernel_proc; init_task.thread.request.u.thread.arg = NULL; return start_idle_thread(task_stack_page(&init_task), &init_task.thread.switch_buf);}unsigned long current_stub_stack(void){ if (current->mm == NULL) return 0; return current->mm->context.id.stack;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -