📄 process.c.txt
字号:
any problems,send mails to sindybear@163.com
相关文件
/fs/exec.c
这个文件主要是关于
(1)
//这是执行一个命令的系统调用
asmlinkage int sys_execve(struct pt_regs regs)
filename = getname((char *) regs.ebx);
error = PTR_ERR(filename);
if (IS_ERR(filename))
goto out;
//函数do_execve定义在fs/exec.c中
//执行这个命令
error = do_execve(filename, (char **) regs.ecx, (char **) regs.edx, ®s);
(2)
void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
……
tss->esp0 = next->esp0; //更新tss中的0层堆栈指针。
…… //其它关于权限的操作
(3)
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
/*
* 这个函数其实等同于系统调用clone()
*/
__asm__ __volatile__(
"movl %%esp,%%esi\n\t"
"int $0x80\n\t" //调用sys_clone系统调用
"cmpl %%esp,%%esi\n\t" //检查进程号
"je 1f\n\t" //如果是父进程,就跳出结束。
"movl %4,%%eax\n\t" //设置参数
"pushl %%eax\n\t"
"call *%5\n\t" //调用线程函数
"movl %3,%0\n\t" //推出
"int $0x80\n"
"1:\t"
:"=&a" (retval), "=&S" (d0)
:"0" (__NR_clone), "i" (__NR_exit),
"r" (arg), "r" (fn),
"b" (flags | CLONE_VM)
: "memory");
return retval;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -