Linux kernel 在Linux中,什么样的函数将被放在ftrace的可用列表中?

Linux kernel 在Linux中,什么样的函数将被放在ftrace的可用列表中?,linux-kernel,ftrace,Linux Kernel,Ftrace,我发现并非同一文件中的每个函数都列在ftrace的/sys/kernel/debug/tracing/available\u filter\u函数中。 例如,blk_mq_map_swqueue()已列出,但blk_mq_add_queue_tag_set()未列出,即使文件blik mq.c上有 我查看linux内核中的文档[]。除了内联函数外,它似乎没有突出显示。 它的标准是什么?正如Roman Zaitsev评论的那样,我为blk_mq_add_queue_tag_set()设置了属性no

我发现并非同一文件中的每个函数都列在ftrace的/sys/kernel/debug/tracing/available\u filter\u函数中。
例如,blk_mq_map_swqueue()已列出,但blk_mq_add_queue_tag_set()未列出,即使文件blik mq.c上有 我查看linux内核中的文档[]。除了内联函数外,它似乎没有突出显示。
它的标准是什么?

正如Roman Zaitsev评论的那样,我为blk_mq_add_queue_tag_set()设置了属性nonline,然后重新构建了内核。 它确实出现在/sys/kernel/debug/tracing/available\u filter\u函数中。
同时,我可以在/sys/kernel/debug/tracing/trace上对其进行跟踪。

blk_mq_add_queue_tag_set()在blk_mq_init_allocated_queue()中只调用了一次,因此它可能是inlined@Roman扎伊采夫:这是有道理的。我将为blk_mq_add_queue_tag_set()重新编译具有属性noinline的块模块,然后重试。@Roman Zaitsev我重建了内核和非线性blk_mq_add_queue_tag_set(),然后我出现在/sys/kernel/debug/tracing/available_filter_函数上。杰出的也许使用trace_printk()比非内联函数更好我不确定,但我认为,使函数非内联的影响