【问题标题】:Where is the definition of __NR_accept?__NR_accept 的定义在哪里?
【发布时间】:2013-04-09 20:19:02
【问题描述】:

据我所知,系统调用号的定义是asm/unistd.h中的__NR_xxxx格式,但我找不到__NR_accept的定义,为什么?

【问题讨论】:

  • 您正在寻找哪种架构,在 arm 中是#define __NR_accept (__NR_SYSCALL_BASE+285)

标签: linux sockets linux-kernel system-calls


【解决方案1】:

在许多架构上,接受系统调用号<asm/unistd.h>

但是,我怀疑您询问的是 i386 或其他“较旧”架构。在这种情况下,由于历史原因,实际上并没有accept 系统调用——相反,使用带有SYS_ACCEPT 调用号的多路复用socketcall 系统调用来执行accept()。您在您的<asm/unistd.h> 中找到__NR_socketcall 的定义(以及@987654334 中@987654334 中SYS_SOCKETSYS_BINDSYS_CONNECTSYS_LISTENSYS_ACCEPT 等的定义@ 用于通过socketcall 复用的各种与套接字相关的系统调用)。

在任何情况下,对于没有真正的accept 系统调用的架构,您当然也不会有系统调用号__NR_accept

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2016-02-19
    • 2016-12-31
    • 2011-10-08
    相关资源
    最近更新 更多