欢迎来到天天文库
浏览记录
ID:48715694
大小:873.00 KB
页数:10页
时间:2020-01-20
《02 内核模块.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、内核模块Linux内核模块的定义和特点模块只是预先注册自己以便服务于将来的某个请求,然后就立即结束。模块可以是实现驱动程序,文件系统,或者其他功能。加载模块后,模块运行在内核空间,和内核链接为一体。思考:内核模块的实际意义是什么?内核模块#include#includestaticint__inithello_init(void){printk("Hello,world");return0;}staticvoid__exithello_exit(void){printk(
2、"Goodbyeworld");return;}module_init(hello_init);module_exit(hello_exit);MODULE_LICENSE("GPL");内核模块代码框架module_init和module_exit定义入口和出口函数__init和__exit宏GPL支持申明函数名和函数具体实现一般是我们开发人员可修改的部分代码的要点动手完成一个helloworld内核模块的例子程序动手练习Makefile的修改Kconfig的修改Makemenuconfig选择目标模块为内核模块,即选择。
3、保存配置后编译内核Makemodules编译所有内核模块获取编译好的内核和内核模块文件(后缀名为ko的文件)内核模块的编译加载内核模块:insmod<模块文件名>比如:#insmod./myhello.ko卸载内核模块:insmod<模块名称>比如:#rmmodmyhello查询内核模块:lsmod比如:#lsmod内核模块的加载卸载模块在加载的同时可以使用参数功能格式:insmod模块名参数1=值1参数2=值2使用module_param声明参数Module_param(参数名,参数类型,参数属性)可以使用module_param_
4、array申明数组,实用性差,不要求掌握。模块参数例子:staticchar*whom=“world”;staticintweek=1;module_param(week,int,S_IRUGO);module_param(whom,charp,S_IRUGO);数据类型:charp,long,short,int,uint,ulong,ushort,bool等属性:S_IRUGO可读S_IWUSR可写模块参数完成一个模块,能手动输入2个参数,一个是名字,一个是星期,并打印出来动手练习
此文档下载收益归作者所有