1

我使用 STrace 跟踪了 Fedora 16(32 位)中的一些程序,并且正在编写一些 python 脚本来解析跟踪。我从 arch/x86/include/asm/unistd_32.h 获得了 Fedora 中的所有系统调用及其相关编号

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

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

set_th3_area (set_thread_area) socket (socketcall)
sendmsg (sendmmsg)
connect
bind (mbind)
getsocketname
sendto 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])
...

但我仍然无法为这些分配一个号码......
最后我需要一系列系统调用号码

4

1 回答 1

1

我终于从 STrace 源代码中获得了完整的系统调用列表!

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

这解决了我的问题。一个有趣的问题是 set_thread_area 首先是由“thread”中的“read”翻译的,这就是我有 set_th3_area 的原因。

于 2013-11-10T06:20:27.370 回答