4

我想修改一些系统调用以进行跟踪。具体来说,每当进行系统调用时open,我都想打印一些消息。

我一直在寻找互联网和代码,我open.ckernel/goldfish/fs/目录中找到了。而且这个文件里有很多功能。我怎么知道确切地调用了哪个函数。我本可以printk在所有这些函数中编写一些调用来找到它,但我也必须为其他系统调用这样做。

所以,我有几个问题,

1)找到系统调用的实现细节的最佳方法是什么?

2) 我使用的是内核 2.6.29 (goldfish-Android)。不同内核版本中的系统调用实现是否不同?

3)strace告诉我msgget,msgrecv和 'SYS_24' 系统调用正在进行。我查看了Android/bionic/libc/SYSCALLS.txt文件,但 msgget 不存在。

但是当我查看android/bionic/libc/kernel/arch-arm/asm/unistd.h文件时,我可以找到msgget那里。我不明白发生了什么,然后我该如何找到实现msgget

谢谢。

4

1 回答 1

4

这个链接提到了几乎所有的系统调用,它们的参数和各自文件中的位置。它帮助我找到了系统调用的详细信息。

克里斯在上面的评论中给出了 strace 的答案,再次感谢他。

于 2013-01-02T06:10:00.707 回答