linux – 引用内核模块中的console_loglevel错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 引用内核模块中的console_loglevel错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1124字,纯文字阅读大概需要2分钟。
内容图文
![linux – 引用内核模块中的console_loglevel错误](/upload/InfoBanner/zyjiaocheng/964/2c33dffa6ca542ed9492ede1f5f665ab.jpg)
我有一个Linux模块,它有一个调试功能,我只想在调试模式下调用该函数.
现在我有这样的代码:
if (console_loglevel >= CONSOLE_LOGLEVEL_DEBUG)
dump_my_message(dev, my_msg);
但是当在linux-next中构建这个代码时,它将抛出以下错误:
CHK include/generated/uapi/linux/version.h
Kernel: arch/x86/boot/bzImage is ready (#2)
Building modules, stage 2.
MODPOST 2738 modules
ERROR: "console_printk" [drivers/mymodule.ko] undefined!
scripts/Makefile.modpost:91: recipe for target '__modpost' failed
make[1]: *** [__modpost] Error 1
Makefile:1117: recipe for target 'modules' failed
make: *** [modules] Error 2
你能帮忙找出如何使这项工作?谢谢!!!
解决方法:
编译错误是由于未导出console_printk符号,因此模块无法使用它.
但是,您真正应该使用的是Dynamic debug功能及其pr_debug()/ dev_dbg()函数.
基本上你需要的是确保你的内核中启用了CONFIG_DYNAMIC_DEBUG,在你想要编写一些调试代码的所有地方使用dev_dbg(),然后动态启用你的调试消息,例如:
>要启用模块中的所有消息,请在insmod / modprobe调用结束时添加dyndbg = p.
>要有选择地仅启用某些消息,请使用文档中描述的查询语言.例如,要仅启用模块中函数foo()和bar()的消息,请使用:
insmod mymodule.ko dyndbg="func foo +p; func bar +p"
内容总结
以上是互联网集市为您收集整理的linux – 引用内核模块中的console_loglevel错误全部内容,希望文章能够帮你解决linux – 引用内核模块中的console_loglevel错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。