在kernel
代码中,很多.c
文件开头都会有pr_fmt
的定义,例如drivers\iommu\dmar.c
:
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt /* has to precede printk.h */
这个pr_fmt
是针对这个特定的模块定义的。看一下include\linux\printk.h
:
#ifndef pr_fmt
#define pr_fmt(fmt) fmt
#endif
可以看到,如果这个模块没有定义自己的pr_fmt
,那么就会使用默认的fmt
。自己定义pr_fmt
的好处是可以更清晰地打印这个模块的相关log
,便于以后调试。