- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux
Linux
LLiinnuuxx开源
Linux Linux
Linux Linux
希望大家支持开源事业支持LLiinnuuxx,尤其是国产LLiinnuuxx 。
大家共同进步!!
RedHat2.4内核
老师在讲解时讲的很详细希望大家都按时到课。
具体程序PPT 里都有,但是PPT 里代码的顺序是颠倒的,包含头文件以后加入那些函数的
声明,比如:
其中改动较大的是如下函数:
1ioctl函数:主要完成以下功能:
设备支持系统调用ioctl(intd, int req,…)
req=0x909090, 清除设备中写入的字符串;
req=0x808080, 返回设备中有效数据的长度;
req=0x707070, 返回设备被写入的次数;
宏定义如下:
2rwbuf_write 函数 和rwbuf_read函数
主要功能如下:
安装设备后从设备中读出字符串为你自己的学号;
设备支持每次写入字符不超过1024个,超过部分被丢弃;
用户可以读出最近写入到设备中的字符;
以上是主要的代码,其他代码和PPT 上差不多,
写完程序后编译成可执行文件用如下命令:
gcc-crwbuf.c -I/usr/src/linux/include -D__KERNEL__ -DMODULE–Wall
编译产生rwbuf.o文件。
编译结果:
这个命令跑出了很多warning,原因在于内核编译与普通程序编译采用的是不同的include,
编译内核应该采用/usr/src/linux-2.4/include,当然这只针对本人使用的Redhat9.0 LINUX-2.4
内核版本而言。即:
gcc-crwbuf.c -I/usr/src/linux-2.4/include -D__KERNEL__ -DMODULE–Wall
编译结果:
没有任何警告。
如果出现以下警告,说明代码里没有包含asm/uaccess.h 头文件
加上后再次编译,如果有以下警告,这说明在rwbuf_read函数中函数要求return但程序里没
有写return或者不是所有路径都return。
编译完生成rwbuf.o文件后输入命令:mknod /dev/rwbuf c 60 0
在系统中生成rwbuf 节点。
这个地方由于本人在注册驱动时采用的是高海昌老师 PPT 里给的设备号,所以此处把254
改为了60,其实这个254是内核给驱动分配的设备号,张老师的PPT里的注册函数是让系
统自动分配这个设备号的。如果你是一直用张老师的PPT的话就不要变。
再输入命令:/sbin/insmod rwbuf.o 来安装设备驱动。这个地方可能
会出现版本内核版本不合的问题,比如:
或者是
rwbuf.o: kernel-module version mismatch
rwbuf.o was compiled for kernel versi
on 2.4.9-9
while this kernel is version 2.4.18-1
0
在rwbuf.c文件的最后加上如下语句MODULE_LICENSE(“GPL”)来忽略版本信
息:
再输入命令:./test /dev/rwbuf 13081ToT 来测试你的驱动程序,本人的输出如下:
注意:./test /dev/rwbuf 13081ToT 只能输入一遍,因为驱动代码里本来植入的是你个人的
学号,老师的test程序在测试时会在确认你的学号和指令中的相同以后会写入大概2k的随
机字符,来测试驱动程序中的读写功能是否满足他的要求以及设备在关闭之前不能打开的功
能。
下面是老师的test 里的测试程序结果:
以下只是一部分输出,从中可以看出老师的test 里for循环里故意将字符数量设为1030并向
下递减十次,以查看驱动程序对这些异常的处
您可能关注的文档
最近下载
- 复旦大学介绍-PPT简介(经典版).pptx VIP
- 安徽省马鞍山市2020-2021学年九年级上学期期中物理试卷(word版 含答案).docx VIP
- 2025年儿科三基三严考试题库.doc VIP
- 品管圈PDCA参赛作品-血透中心提升维持性血液透析患者钙磷甲状旁腺激素合格率医院品质管理案例(1).pptx
- 2025耐碳青霉烯类革兰氏阴性杆菌感染的诊治和防控指南推荐意见(全文).pdf VIP
- 二零二三年 优质公开课10的认识.ppt VIP
- 基于统计方法的我国上市公司信用风险评估模型研究.pdf VIP
- 沙场转让合同协议书.docx VIP
- 数字医学专业介绍.pptx VIP
- 中国共产党纪律处分条例.pptx VIP
文档评论(0)