如何使一个Linux内核函数可用于ftrace function_graph tracer?

Jer*_*her 12 linux android kernel ftrace

我想在内核启动过程中使用ftrace跟踪一个函数,function_graph以了解它的作用,但是它不可用available_filter_functions.

我试图将其导出EXPORT_SYMBOL(),猜测它会使它可用,但事实并非如此.

你有解决方案吗 ?

有关信息,功能我想跟踪是persistent_ram_init_ringbufferpersistent_ram_early_init在内核的Android 3.4.

我仔细阅读了文档,但没有发现任何内容,grep没有帮助更多......

谢谢

小智 8

问题是这些函数是用__init和__devinit注释的,它们是由ftrace函数跟踪器列出的黑色.

为什么?因为作为模块初始化函数(或内核初始化函数),它们在初始化期间加载,并在初始化完成时被移除.ftrace跟踪的每个函数都保存在一个特殊的紧凑表中.目前,没有办法告诉ftrace这些函数已被删除(释放),而ftrace应该从它的表中删除它们.如果我们只是忽略它,那么当启用函数跟踪时,ftrace将尝试修改不再存在的位置并导致各种问题(还记得e1000e错误吗?).

如果您确实想要跟踪它们,请删除这些注释.然后它们应出现在要跟踪的函数列表中.