系统驱动---网络设备驱动(实现读写的请求处理函数步骤)

实现步骤

1.从请求队列中获取一个请求

函数:struct request *blk_fetch_request(struct request_queue *q)
*q:指向请求队列的指针
返回值:从请求队列中获取到的一个请求

2.获取当前请求的位置(在哪里读写)

函数:static inline sector_t blk_rq_pos(const struct request_queue *rq)
rq:指向请求的指针
返回值:扇区的位置
blk_rq_pos
512=具体的字节位置

3.获取从当前位置要读、写多少个字节?

函数:static inline unsigned int blk_rq_cur_sectors((const struct request *rq)
作用:获取请求需要的位置
rq:指向请求的指针
返回值:扇区的个数
blk_rq_cur_sectors
512=具体的字节大小

4.判断请求的方向?

函数:re_data_dir(rq)
*rq:指向请求的指针
返回值:读 READ 写WRITE

5.根据请求的方向读写数据

read:硬盘数据----》req请求—》buffer
函数:memcpy(req–>buffer,g_Data+offset,nbytes)

write:req–》buffer->硬盘
函数:memcpy(g_Data+offset,req->buffer,nbytes)

6.判断当前请求是否处理完毕

函数:bool_blk_end_request_cur(struct request *rq,int error)
*rq:指向请求的指针
error:0
返回值:结束返回true
1.txt 10byte—》扇区号100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值