我使用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])
...
但我仍然有为这些分配号码的问题......
最后,我需要一系列系统调用号
答案 0 :(得分:1)
我终于掌握了来自STrace源代码的完整系统调用列表!
http://sourceforge.net/p/strace/code/ci/master/tree/linux/i386/syscallent.h
这解决了我的问题。一个有趣的问题是set_thread_area首先被“线程”中的“读取”翻译,这就是为什么我有set_th3_area。