首页 / LINUX / linux内核之模块参数及导出符号
linux内核之模块参数及导出符号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux内核之模块参数及导出符号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1473字,纯文字阅读大概需要3分钟。
内容图文
1. 模块参数
用 “module_param (参数名,参数类型,参数读 / 写权限) ” 为模块定义一个参数,例如下列代码定义了 1 个整型参数和 1 个字符指针参数:
1 static char *book_name = "dissecting Linux Device Driver"; 2 module_param(book_name, charp, S_IRUGO); 3 static int book_num = 4000; 4 module_param(book_num, int, S_IRUGO);
在装载内核模块时,用户可以向模块传递参数,形式为 “insmode 模块名 参数名 = 参数值,如果不传递,参数将使用模块内定义的缺省值。参数类型可以是 byte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、 charp (字符指针)、 bool 或 invbool (布尔的反),在模块被编译时会将 module_param 中声明的类型与变量定义的类型进行比较,判断是否一致。模块被加载后,在 /sys/module/ 目录下将出现以此模块名命名的目录。在此模块的目录下还将出现 parameters 目录,其中包含一系列以参数名命名的文件节点,这些文件的权限值就是传入module_param ()的 “参数读 / 写权限” ,而文件的内容为参数的值。
insmod命令加载模块后,通过查看 “/var/log/messages” 日志文件可以看到内核的输出:
# tail -n 2 /var/log/messages
tail -n 2表示输入文件的最后2行
2. 导出符号
Linux 的 “/proc/kallsyms” 文件对应着内核符号表,它记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表中:
EXPORT_SYMBOL( 符号名 ); EXPORT_SYMBOL_GPL( 符号名 );
导出的符号可以被其他模块使用,只需使用前声明一下即可。 EXPORT_SYMBOL_GPL ()只适用于包含 GPL许可权的模块。
如果符号名是“e_symbol”,从 “/proc/kallsyms” 文件中找出 e_symbol 的相关信息:
# grep e_symbol /proc/kallsyms
8000af1c t e_symbol [export_symb]
内容总结
以上是互联网集市为您收集整理的linux内核之模块参数及导出符号全部内容,希望文章能够帮你解决linux内核之模块参数及导出符号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。