【发布时间】:2015-07-13 21:35:50
【问题描述】:
出于某些实验目的,我需要创建一个没有共享内存的子内核进程。据我所知,kthread_create 和 kernel_thread 例程总是用 CLONE_VM 调用 do_fork。但我需要在没有 CLONE_VM 的情况下调用 do_fork
我在arch/x86_64/kernel/process.c中找到了(x86_64是适合实验的架构):
asmlinkage long sys_fork(struct pt_regs *regs)
{
return do_fork(SIGCHLD, regs->rsp, regs, 0, NULL, NULL);
}
我认为,我应该调用 do_fork(SIGCHLD, regs->rsp, regs, 0, NULL, NULL)。但我不明白如何设置 pt_regs 结构。我想根据当前进程的寄存器设置结构。 是否有根据当前进程填充 pt_regs 的功能?或者也许有一种不同的方法可以在内核中使用自己的内存创建进程?
【问题讨论】:
标签: c linux linux-kernel kernel fork