通过KBUILD_MODNAME让dev_err等函数打印模块的name

在drivers/base/core.c 中有dev_err 等的实现
2808    #define define_dev_printk_level(func, kern_level)        \
2809    void func(const struct device *dev, const char *fmt, ...)    \
2810    {                                \
2811        struct va_format vaf;                    \
2812        va_list args;                        \
2813                                    \
2814        va_start(args, fmt);                    \
2815                                    \
2816        vaf.fmt = fmt;                        \
2817        vaf.va = &args;                        \
2818                                    \
2819        __dev_printk(kern_level, dev, &vaf);            \
2820                                    \
2821        va_end(args);                        \
2822    }                                \
2823    EXPORT_SYMBOL(func);
2824    
2825    define_dev_printk_level(dev_emerg, KERN_EMERG);
2826    define_dev_printk_level(dev_alert, KERN_ALERT);
2827    define_dev_printk_level(dev_crit, KERN_CRIT);
2828    define_dev_printk_level(dev_err, KERN_ERR);
注意在dev_err 等的函数实现define_dev_printk_level 中的fmt,这样我们在自己的驱动中可以通过定义
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
这样在驱动中通过dev_err(dev, "can't read time\n"); 打印error log的话,实际效果如下:
rtc-efi rtc-efi: can't read time

这里的关键就是KBUILD_MODNAME,

obj-$(CONFIG_RTC_DRV_EFI)    += rtc-efi.o
从makefile中就可以看到这个.o的KBUILD_MODNAME 就是rtc-efi.
---------------------


原文:https://blog.csdn.net/tiantao2012/article/details/76443736
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值