4,465
社区成员




1567 long do_fork(unsigned long clone_flags,
1568 unsigned long stack_start,
1569 struct pt_regs *regs,
1570 unsigned long stack_size,
1571 int __user *parent_tidptr,
1572 int __user *child_tidptr)
/////////////////////////////////////////////////////////////////////////
非得到这函数可以参考内核里应用代码,如我找到的:
[code=c]
609 pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
610 {
611 struct pt_regs regs;
612
613 memset(®s, 0, sizeof(regs));
614
615 regs.ARM_r4 = (unsigned long)arg;
616 regs.ARM_r5 = (unsigned long)fn;
617 regs.ARM_r6 = (unsigned long)kernel_thread_exit;
618 regs.ARM_r7 = SVC_MODE | PSR_ENDSTATE | PSR_ISETSTATE;
619 regs.ARM_pc = (unsigned long)kernel_thread_helper;
620 regs.ARM_cpsr = regs.ARM_r7 | PSR_I_BIT;
621
622 return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, ®s, 0, NULL, NULL);
623 }
624 EXPORT_SYMBOL(kernel_thread);
[/code]