02 内核模块.ppt_第1页
02 内核模块.ppt_第2页
02 内核模块.ppt_第3页
02 内核模块.ppt_第4页
02 内核模块.ppt_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内核模块,Linux内核模块的定义和特点 模块只是预先注册自己以便服务于将来的某个请求,然后就立即结束。 模块可以是实现驱动程序,文件系统,或者其他功能。 加载模块后,模块运行在内核空间,和内核链接为一体。 思考:内核模块的实际意义是什么?,内核模块,#include #include static int _init hello_init(void) printk(Hello, worldn); return 0; static void _exit hello_exit(void) printk(Goodbye worldn); return; module_init(hello_init

2、); module_exit(hello_exit); MODULE_LICENSE(GPL);,内核模块代码框架,module_init和module_exit定义入口和出口函数 _init和_exit宏 GPL支持申明 函数名和函数具体实现一般是我们开发人员可修改的部分,代码的要点,动手完成一个hello world内核模块的例子程序,动手练习,Makefile的修改 Kconfig的修改 Make menuconfig选择目标模块为内核模块,即选择。 保存配置后编译内核 Make modules编译所有内核模块 获取编译好的内核和内核模块文件(后缀名为ko的文件),内核模块的编译,加载内

3、核模块: insmod 比如:# insmod ./myhello.ko 卸载内核模块: insmod 比如:# rmmod myhello 查询内核模块: lsmod 比如:# lsmod,内核模块的加载卸载,模块在加载的同时可以使用参数功能 格式: insmod 模块名 参数1=值1 参数2=值2 使用module_param声明参数 Module_param(参数名,参数类型,参数属性) 可以使用module_param_array申明数组,实用性差,不要求掌握。,模块参数,例子: static char *whom = “world”; static int week = 1; module_param(week, int, S_IRUGO); module_param(whom, charp, S_IRUGO); 数据类型:charp,long, short, int, uint, ulong, ushort, bool等 属性:S_IRUGO 可读 S_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论