实验十三-块设备驱动

实验十三-块设备驱动

ID:33037649

大小:115.93 KB

页数:6页

时间:2019-02-19

实验十三-块设备驱动_第1页
实验十三-块设备驱动_第2页
实验十三-块设备驱动_第3页
实验十三-块设备驱动_第4页
实验十三-块设备驱动_第5页
资源描述:

《实验十三-块设备驱动》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验十三块设备驱动实验目的熟悉块设备驱动程序的架构;掌握编写快设备驱动程序的流程和力法;实验步骤1膜劉完善下而的块设备驱动程序my」amblock.c,驱动程序如下:#include#include#include#include#include#include#include#include

2、#include#include#include#ineludevlinux/wait.h>#include#include#include#include#ineludevlinux/gfp.h>#include#include

3、/system.h>#include#inelude#defineMYDISK_SIZE(1024*1024)#defineMYDISK_NAMEHram_siceHstaticDEFlNE_SPINLOCK(mydisk_lock);staticconststructblock_device_operationsmydisk_fops={.owner=THISMODULE,};staticstructgendisk*my_disk;static

4、structrequest_queue*my_queue;staticunsignedchar*ram_buffer;staticintmajor;staticvoidmyblock_do_request(structrequest_queue*q){structrequest*req;req=blk_fetch_request(q);/*取出一个请求*/while(req){unsignedlongoffset=blk_rq_pos(req)«9;/*获取req的扇区位置,并乘512字节,请求里

5、的起始地址*/unsignedlonglen=blk_rq_cur_bytes(req);/*要操作数据的大小*/if(rq_data_dir(req)==READ)严判断是否是读操作*/memcpy(req・>buffer,ram_buffer+offset,len);elsememcpy(ram_buffer+offset,req->buffer,len);if(!_blk_end_request_cur(req,O))/*完成当前请求*/req=blk_fetch_request(q);/*

6、取下一个请求*/staticintmy_ram_init(void){major=register_blkdev(O,MYDISK_NAME);/*动态分配主设备号*/my_disk=alloc_disk(8);/*8为次设备号个数:分区个数+1*/my_queue=blk_init_queue(myblock_do_request,&mydiskjock);/*初始化队列*/my_disk->queue=my_queue;my_disk->major=major;my_disk->first_m

7、inor=0;sprintf(my_disk->disk_name,MYDISK_NAME);my_disk->fops=&mydisk_fops;set_capacity(my_disk,MYDISK_SIZE/512);ram_buffer=kzalloc(MYDISK_SIZE,GFP_KERNEL);add_disk(my_disk);/*注册gendisk*/return0;}staticvoidmy_ram_exit(void)unregister_blkdev(major,MYDIS

8、K_NAME);del_gendisk(my_disk);put_disk(my_disk);blk_cleanup_queue(my_queue);kfree(ram_buffer);}module_init(my_ram_init);module_exit(my_ram_exit);MODULE.LICENS玖9PI7);2编译在开发板上插入模块insmodramblock.ko格式化mkdosfs/dev/ram_sice挂载mkdir/tmp/rammount/dev/ra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。