⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exec_kern.c

📁 linux-2.6.15.6
💻 C
字号:
/*  * Copyright (C) 2002 Jeff Dike (jdike@karaya.com) * Licensed under the GPL */#include "linux/kernel.h"#include "linux/mm.h"#include "asm/signal.h"#include "asm/ptrace.h"#include "asm/uaccess.h"#include "asm/pgalloc.h"#include "asm/tlbflush.h"#include "user_util.h"#include "kern_util.h"#include "irq_user.h"#include "time_user.h"#include "signal_user.h"#include "mem_user.h"#include "os.h"#include "tlb.h"#include "mode.h"static int exec_tramp(void *sig_stack){	init_new_thread_stack(sig_stack, NULL);	init_new_thread_signals(1);	os_stop_process(os_getpid());	return(0);}void flush_thread_tt(void){	unsigned long stack;	int new_pid;	stack = alloc_stack(0, 0);	if(stack == 0){		printk(KERN_ERR 		       "flush_thread : failed to allocate temporary stack\n");		do_exit(SIGKILL);	}			new_pid = start_fork_tramp(current->thread_info, stack, 0, exec_tramp);	if(new_pid < 0){		printk(KERN_ERR 		       "flush_thread : new thread failed, errno = %d\n",		       -new_pid);		do_exit(SIGKILL);	}	if(current_thread->cpu == 0)		forward_interrupts(new_pid);	current->thread.request.op = OP_EXEC;	current->thread.request.u.exec.pid = new_pid;	unprotect_stack((unsigned long) current_thread);	os_usr1_process(os_getpid());	change_sig(SIGUSR1, 1);	change_sig(SIGUSR1, 0);	enable_timer();	free_page(stack);	protect_memory(uml_reserved, high_physmem - uml_reserved, 1, 1, 0, 1);	task_protections((unsigned long) current_thread);	force_flush_all();	unblock_signals();}void start_thread_tt(struct pt_regs *regs, unsigned long eip, 		     unsigned long esp){	set_fs(USER_DS);	flush_tlb_mm(current->mm);	PT_REGS_IP(regs) = eip;	PT_REGS_SP(regs) = esp;	PT_FIX_EXEC_STACK(esp);}/* * Overrides for Emacs so that we follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-file-style: "linux" * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -