Linux中ftrace的可用列表中会放置哪些函数?

4
我发现并不是每个文件中的函数都在/sys/kernel/debug/tracing/available_filter_functions中列出了,例如blk_mq_map_swqueue()被列出了,但是blk_mq_add_queue_tag_set()却没有,尽管它们都在blik-mq.c文件中。
我查看了Linux内核文档[1],除了内联函数外,似乎没有对此进行特别强调。那么这个标准是什么呢?

4
blk_mq_add_queue_tag_set() 只在 blk_mq_init_allocated_queue() 中调用一次,因此它可能会被内联。 - Roman Zaitsev
@Roman Zaitsev,这说得通。我会用属性noinline重新编译block模块的blk_mq_add_queue_tag_set()函数,然后再试一次。 - codexplorer
@Roman Zaitsev 我重新构建了内核并非内联 blk_mq_add_queue_tag_set(),然后我出现在 /sys/kernel/debug/tracing/available_filter_functions。太棒了!! - codexplorer
或许使用 trace_printk() 比非内联一个函数更好。 - codexplorer
我不确定,但我认为将函数设置为非内联的影响 << 调用另一个函数(如trace_printk())的影响。 - Roman Zaitsev
1个回答

3

正如Roman Zaitsev所评论的那样,我为blk_mq_add_queue_tag_set()设置了非内联属性,然后重新构建了内核。 它出现在/sys/kernel/debug/tracing/available_filter_functions上。 同时,我可以在/sys/kernel/debug/tracing/trace上跟踪它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接