实现读写的请求处理函数
实现步骤
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_pos512=具体的字节位置
3.获取从当前位置要读、写多少个字节?
函数:static inline unsigned int blk_rq_cur_sectors((const struct request *rq)
作用:获取请求需要的位置
rq:指向请求的指针
返回值:扇区的个数
blk_rq_cur_sectors512=具体的字节大小
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