我想修改一些系统调用以进行跟踪。具体来说,每当进行系统调用时open
,我都想打印一些消息。
我一直在寻找互联网和代码,我open.c
在kernel/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
?
谢谢。