我想修改一些系统调用以进行跟踪。具体来说,无论何时进行系统调用open
,我都想打印一些消息。
我一直在查看互联网和代码,我在open.c
目录中找到了kernel/goldfish/fs/
。此文件中有许多功能。我怎么知道确切地调用了哪个函数。我可以在所有这些函数中编写一些printk
调用来查找它,但我也必须为其他系统调用执行此操作。
所以,我有几个问题,
1)找到系统调用的实现细节的最佳方法是什么?
2)我使用的是内核2.6.29(金鱼-Android)。不同内核版本的系统调用实现是否不同?
3)strace
告诉我正在进行msgget
,msgrecv
和'SYS_24'系统调用。我查看Android/bionic/libc/SYSCALLS.txt
文件,msgget不存在。
但是当我查看android/bionic/libc/kernel/arch-arm/asm/unistd.h
文件时,我可以在那里找到msgget
。我无法理解发生了什么,然后如何找到msgget
的实现?
感谢。