process.c

来自「linux 内核源代码」· C语言 代码 · 共 70 行

C
70
字号
/* * 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 + =
减小字号Ctrl + -
显示快捷键?