第7章 linux下模块编程实验.ppt
《第7章 linux下模块编程实验.ppt》由会员分享,可在线阅读,更多相关《第7章 linux下模块编程实验.ppt(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/1/14成都信息工程学院1第第7章章 模块编程实验模块编程实验2023/1/14成都信息工程学院2n一、一、实验目的目的n体会用体会用户空空间和系和系统空空间;n理解操作系理解操作系统“宏内核宏内核”组织方式方式n学学习模模块操作(加操作(加载、卸、卸载)2023/1/14成都信息工程学院3n二、模二、模块的的组织结构构n内核模内核模块至少包含两个函数:至少包含两个函数:n模模块加加载函数:函数:init_module(),作,作为模模块的初始的初始化函数,模化函数,模块加加载时被被执行行n模模块卸卸载函数:函数:cleanup_module(),作,作为模模块的的结束函数,模束函数
2、,模块卸卸载时被被执行行n从从2.3.13内核开始,也可以内核开始,也可以为开始和开始和结束函数起束函数起任意名称任意名称。这可以通可以通过宏宏module_init()和和module_exit()实现2023/1/14成都信息工程学院4n内核模内核模块包含包含头文件及宏文件及宏说明:明:n#include n它定它定义了模了模块的的 API、类型和宏型和宏(MODULE_LICENSE、MODULE_AUTHOR等等等等),所有的内核模所有的内核模块都必都必须包含包含这个个头文件。文件。n#include n使用内核信息使用内核信息记录优先先级时要包含要包含这个文件,一般在使个文件,一般在
3、使用用printk函数函数时使用到使用到优先先级信息。信息。n#include nmodule_init、module_exit等宏定等宏定义。2023/1/14成都信息工程学院5n内核模内核模块的代的代码编写没有外部的函数写没有外部的函数库可以可以用,只能使用内核用,只能使用内核导出的函数出的函数n如:不能使用如:不能使用printf(),而要使用,而要使用printk()nprintk()并不是并不是设计用来同用用来同用户交互的,它交互的,它实际上是上是为内核提供日志功能,内核提供日志功能,记录内核信息或用来内核信息或用来给出警告。因此,每个出警告。因此,每个printk()声明都会声明都
4、会带一个一个优先先级,形如,形如和和KERN_ALERT 那那样。内核。内核总共定共定义了八个了八个优先先级的宏。的宏。(具体可具体可查看文件:看文件:/usr/src/linux-2.4/include/linux/kernel.h)2023/1/14成都信息工程学院6n三、添加模块三、添加模块2023/1/14成都信息工程学院71、最、最简单的内核模的内核模块(hello.c)#include#include int init_module()printk(Hello!This is a testing module!n);return 0;void cleanup_module()pri
5、ntk(“Sorry!The module is unloading!n);2023/1/14成都信息工程学院8n内核模内核模块在用在用gcc 编译时需要使用特定的参数:需要使用特定的参数:ngcc -Wall-DMODULE-D_KERNEL_-DLINUX-c 用用insmod命令手工加命令手工加载编译好的模好的模块:ninsmod hello.on如果出如果出现“kernel-module version mismatch”错误,修改:,修改:编译器版本器版本/usr/include/linux/version.h 或者内核源代或者内核源代码版本版本/usr/src/linux-2.4/
6、include/linux/version.h使两者使两者相同即可相同即可n如果成功,可以看到屏幕如果成功,可以看到屏幕输出信息;同出信息;同时,可用,可用dmesg命令命令查看、也可在看、也可在/var/log/messages文件中文件中查看到相看到相应输出出2023/1/14成都信息工程学院9n用用lsmod命令命令查看加看加载成功的模成功的模块:nlsmod n所有已所有已经被加被加载的内核模的内核模块都都罗列在文件列在文件/proc/modules 中,中,因此可因此可查看看该文件也可得到模文件也可得到模块列表列表n用用modinfo 模模块名名 可可查看具体的模看具体的模块信息信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 linux下模块编程实验 linux 模块 编程 实验
限制150内