我想在内核启动过程中使用ftrace function_graph
跟踪一个函数,以了解它的作用,但available_filter_functions
中没有。
我尝试用EXPORT_SYMBOL()
导出它,猜测它会使它可用,但事实并非如此。
你有解决方案吗?
有关信息,我要跟踪的功能是Android内核3.4中的persistent_ram_init_ringbuffer
和persistent_ram_early_init
。
我仔细阅读了文档,但没有发现任何内容,grep没有帮助更多......
由于
答案 0 :(得分:8)
问题是这些函数是用__init和__devinit注释的,它们是由ftrace函数跟踪器列出的黑色。
为什么呢?因为作为模块初始化函数(或内核初始化函数),它们在初始化期间加载,并在初始化完成时被移除。 ftrace跟踪的每个函数都保存在一个特殊的紧凑表中。目前,没有办法告诉ftrace这些函数已被删除(释放),而ftrace应该从它的表中删除它们。如果我们只是忽略它,那么当启用函数跟踪时,ftrace将尝试修改不再存在的位置并导致各种问题(还记得e1000e错误吗?)。
如果您确实要跟踪它们,请删除这些注释。然后它们应出现在要跟踪的函数列表中。
答案 1 :(得分:1)
http://lwn.net/Articles/370423/
http://www.mjmwired.net/kernel/Documentation/trace/ftrace.txt
这些链接可能有所帮助。首先是通过谷歌搜索找到的东西。第二是ftrace文档