Linux内核中trace_io_uring_submit_sqe函数的定义位置在哪里?
关于
trace_io_uring_submit_sqe符号找不到的问题解答 问题核心原因
trace_io_uring_submit_sqe 是真实存在的函数,但并非人工编写的C函数,是Linux内核tracepoint机制通过宏自动生成的函数,所以直接在普通C源码文件中搜索不到定义属于正常情况。
具体规则说明
内核所有trace_前缀的tracepoint调用,对应的定义都存放在对应模块的trace事件头文件中,以TRACE_EVENT()宏的形式声明:
- io_uring模块对应的trace头文件路径为
include/trace/events/io_uring.h - 你需要搜索的是
io_uring_submit_sqe(去掉前缀trace_)的TRACE_EVENT宏定义,宏在编译阶段展开后才会生成完整的trace_io_uring_submit_sqe函数实体。 - 常规代码检索平台默认不会索引编译阶段生成的代码,也不会展开宏定义做关联检索,所以直接搜完整函数名会返回无结果。
可行的查找方法
- 直接检索trace事件头目录:在内核源码根目录执行命令
grep -r "io_uring_submit_sqe" include/trace/events/,即可定位到对应的TRACE_EVENT定义 - 如果你有对应版本内核的编译产物,可以到
include/generated/trace/events/io_uring.h路径下查找编译阶段自动生成的完整函数定义 - 检索时去掉
trace_前缀再搜索,匹配到TRACE_EVENT宏定义即为该函数的原始定义。
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

