linux5.12.2系统调用表——fork

代码68行:

57    common    fork            sys_fork

unistd32.h

对#define __SYSCALL(x, y)理解:

#define __NR_fork 2   //偏移量

__SYSCALL(__NR_fork, sys_fork)

===============================================================

nolibc.h

static __attribute__((unused))

pid_t sys_fork(void)

{

#ifdef __NR_clone

    /* note: some archs only have clone() and not fork(). Different archs

     * have a different API, but most archs have the flags on first arg and

     * will not use the rest with no other flag.

     *  注释说明一切

     */

    return my_syscall5(__NR_clone, SIGCHLD, 0, 0, 0, 0);

#elif defined(__NR_fork)

    return my_syscall0(__NR_fork);

#else

#error Neither __NR_clone nor __NR_fork defined, cannot implement sys_fork()

#endif

}

===============================================================

#define my_syscall0(num)                                                      \

({                                                                            \

    long _ret;                                                            \

    register long _num  asm("rax") = (num);                               \

                                          \

    asm volatile (                                                        \

        "syscall\n"                                                   \

        : "=a" (_ret)                                                 \

        : "0"(_num)                                                   \

        : "rcx", "r8", "r9", "r10", "r11", "memory", "cc"             \

    );                                                                    \

    _ret;                                                                 \

})

。。。。。。没明白

=========================================================

fork.c  文件

copy_process  老版本  do_fork  1852行

static __latent_entropy struct task_struct *copy_process(

                    struct pid *pid,

                    int trace,

                    int node,

                    struct kernel_clone_args *args)

===========================================================

先到这。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从一而终

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值