linux内核 fork() 宏展开问题

zp37 2016-10-31 01:05:03
在linux0.11内核中,fork是由
#define _syscall0(type,name) \
type name(void) \
{ \
long __res; \
__asm__ volatile ("int $0x80" \
: "=a" (__res) \
: "0" (__NR_##name)); \
if (__res >= 0) \
return (type) __res; \
errno = -__res; \
return -1; \
}
宏展开得到的,那我们在调用fork()的时候,为什么不需要写成_syscall0(int,fork)这种形式?
...全文
661 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nswcfd 2016-11-05
  • 打赏
  • 举报
回复
当然可以这么可啊,只是libc已经提供了封装好的API,就没有必要直接调用syscall了。
Wenxy1 2016-11-02
  • 打赏
  • 举报
回复
系统调用就是这么规定的语法。
cocoabird 2016-11-02
  • 打赏
  • 举报
回复
为了统一标准
will热爱 2016-10-31
  • 打赏
  • 举报
回复
可读性太差 哈哈哈

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧