我正在做一个操作系统分配,它正在添加一个新的系统调用。称为“dumbfork”的系统调用需要在不使用写时复制策略的情况下分叉一个进程。所以基本上它必须将整个地址空间复制到子进程。
我能够设置和重新编译系统内核。我可以调用我的自定义系统调用,但我不知道如何实际实现哑叉来禁用 COW 功能。其中一个源代码向我展示了sys_vfork如何调用 do_fork。Dumbfork 应该类似于 sys_vfork。我不知道如何设置do_fork的参数。我试图模仿 sys_fork 是如何实现的,它给了我一个 NULL 指针取消引用错误。任何人都可以在这个问题上启发我。
asmlinkage long sys_dumbfork(struct pt_regs *regs)
{
return do_fork(SIGCHLD, regs->sp, regs, 0, NULL, NULL);
}