Plik arch/i386/kernel/process.c

Funkcje sys_xxx używane do tworzenia nowych procesów. Są to funkcje systemowe odpowiadające wywołaniom fork, vfork, clone. Wywołują funkcję do_fork przekazjąc jej flagi klonowania z sygnałem informującym o śmierci dziecka, wskaźnik stosu użytkownika procesu potomnego ( regs.esp to wskaźnik stosu procesu wołającego ) oraz strukturę pt_regs zawierającą wartości rejestrów procesu z chwili wołania. Ostatni parametr - rozmiar stosu dziecka - jest nieużywany na architekturze i386.


asmlinkage int sys_fork(struct pt_regs regs)
{
	return do_fork(SIGCHLD, regs.esp, & regs, 0);
}

asmlinkage int sys_clone(struct pt_regs regs)
{
	unsigned long clone_flags;
	unsigned long newsp;

	clone_flags = regs.ebx;
	newsp = regs.ecx;
	if (!newsp)
		newsp = regs.esp;
	return do_fork(clone_flags, newsp, & regs, 0);
}

asmlinkage int sys_vfork(struct pt_regs regs)
{
        return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs.esp, & regs, 0);
}