系统调用系统调用表中不存在的系统调用

时间:2013-11-10 03:08:19

标签: linux linux-kernel fedora system-calls 32-bit

我使用STrace在Fedora 16(32位)中跟踪了一些程序,我正在编写一些python脚本来解析跟踪。我从Fedora获得了所有系统调用及其相关数字 拱/ 86 /包含/ ASM / unistd_32.h

然而最后我发现这个表中不存在一些系统调用,我想知道了 1.怎么可能?
2.我应该如何为这些系统调用分配一个号码?

以下是其中一些系统调用:

  

set_th3_area(set_thread_area)   插座(socketcall)
  sendmsg(sendmmsg)
  连接
  bind(mbind)
  getsocketname
  发送至   recvmsg(recvmmsg)

他们中的一些人在表格中有一个类似的系统调用,我把它放在上面列表的括号中。

更新:我发现其中大部分存在于net / socket.c

  

int sys_socketcall(int call,unsigned long * args)

     

int sys_socket(int family,int type,int protocol)   int sys_socketpair(int family,int type,int protocol,int usockvec [2])
  ...

但我仍然有为这些分配号码的问题......
最后,我需要一系列系统调用号

1 个答案:

答案 0 :(得分:1)

我终于掌握了来自STrace源代码的完整系统调用列表!

http://sourceforge.net/p/strace/code/ci/master/tree/linux/i386/syscallent.h

这解决了我的问题。一个有趣的问题是set_thread_area首先被“线程”中的“读取”翻译,这就是为什么我有set_th3_area。