linux内核模块实验2学时_第1页
linux内核模块实验2学时_第2页
linux内核模块实验2学时_第3页
linux内核模块实验2学时_第4页
linux内核模块实验2学时_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、第一个内核模块实验一: 预习要求:( 1 ) 做本实验之前,请复习相关内核模块知识。( 2 ) 请了解内核模块的编写、编译及安装与卸载方法。( 3 ) 请学习内核打印函数 printk() 的用法。( 4 ) 请复习 Makefile 文件的编写。二:实验目的:( 1 ) 掌握内核模块的组成部分。( 2 ) 掌握内核模块的编译、安装与卸载方法。( 3 ) 学会查看内核模块的信息。三:实验任务:编写一个内核模块module,向外导出两个函数,分别是“求累积和”和“求阶乘”功能。编写另两个内核模块module1、module2,分别使用上面module模块中的函数,实现计算。注意路径清晰,分别在三

2、个目录下编写。四:实验原理及方法:Linux 内核模块( LKM )是一些在启动的操作系统内核需要时可以载入内核执行的代码块,不需要时由操作系统卸载。它们扩展了操作系统内核功能却不需要重新编译内核、启动系统。如果没有内核模块,就不得不反复编译生成操作系统的内核镜像来加入新功能,当附加的功能很多时,还会使内核变得臃肿。一个 Linux 内核模块主要由以下几个部分组成:(1) 模块加载函数 ( 必须 ) :当通过 insmod 或 modprobe 命令加载内核模块时,模块的 加(1) 模块加载函数 ( 必须 ) :当通过 insmod 或 modprobe 命令加载内核模块时,模块的加载函数会自

3、动被内核执行,完成本模块相关初始化工作。(2) 模块卸载函数(必须):当通过 rmmod 命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能。(3) 模块许可证声明(必须):模块许可证( LICENCE )声明描述内核模块的许可权限,如果不声明 LICENCE, 模块被加载时将收到内核被污染的警告。大多数情况下内核模块应遵循 GPL 兼容许可权。 L inux2.6内核模块最常见的是以MODULE_LICENSE( “ Dual BSD/GPL ” ) 语句声明模块采用 BSD/GPL 双 LICENSE 。(4) 模块参数(可选):模块参数是模块被加载的时候可以被传

4、递给他的值,它本身对应模块内部的全局变量。(5) 模块导出符号(可选):内核模块可以导出符号 (symbol, 对应于函数或变量 ) ,这样其他模块可以使用本模块中的变量或函数。(6) 模块作者等信息声明(可选)。一个内核模块至少包含两个函数,模块被加载时执行的初始化函数 init_module() 和模块被卸载时执行的结束函数 cleanup_module() 。在最新内核稳定版本 2.6 中,两个函数可以起任意的名字,通过宏module_init() 和 module_exit() 注册调用。五:实验步骤:1. 创建目录modparm,在modparm下创建module1和module2目

5、录(同学也可以创建不同的目录,因为每个模块都有自己的Makefile文件,所以每个Makefile必须在不同的目录下)。在modparm存放modtest模块,在module1下存放module1模块,在module2下存放module2模块。我的电脑上如下:2,编写模块的源程序和其Makefile文件(1)modtest.c的清单如下:modtest.的Makefile如下:(2)module1.c清单如下:module1的Makefile如下:(3) module2.c清单如下:Module2的Makefile如下:3 编译模块(1)把生成modtest.ko模块时生成的Module.symvers放到module1文件夹中。这样编译module1时,符号信息就会自动链接进去了。(2)分别执行make命令,编译modtest.c、module1.c、module2.cc4 安装模块5查看模块lsmod查看安装是否成功,下图中可看到module1和module2的使用者数量为0,而modtest被module1和module2使用,因此其使用者数

温馨提示

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

评论

0/150

提交评论