我想在内核启动过程中用function_graph
ftrace追踪一个函数来理解它做什么,但是它在available_filter_functions
是不可用的。
我试图导出EXPORT_SYMBOL()
,猜测它会使它可用,但事实并非如此。
你有解决scheme吗 ?
有关信息,我想跟踪的function是Android内核3.4中的persistent_ram_init_ringbuffer
和persistent_ram_early_init
。
我读通过文件,但没有发现在这个和grep没有帮助更多…
谢谢
问题是这些函数是用__init和__devinit注释的,它们是由ftrace函数跟踪器列出的黑名单。
为什么? 因为作为模块初始化函数(或内核初始化函数),它们在初始化期间被加载并且在初始化完成时被删除。 跟踪轨迹的每个函数都保存在一个特殊的紧凑表中。 目前,没有办法告诉ftrace那些函数已经被移除(释放),并且ftrace应该从它的表中移除它们。 如果我们忽略这一点,那么当启用函数跟踪时,ftrace会尝试修改不再存在的位置,并可能导致各种问题(请记住e1000e错误?)。
如果你真的想跟踪他们,然后删除这些注释。 然后他们应该出现在追踪的功能列表中。
http://lwn.net/Articles/370423/
http://www.mjmwired.net/kernel/Documentation/trace/ftrace.txt
这些链接可能有帮助。 首先是我用google搜索到的东西。 其次是ftrace文件