找回密码
 注册
查看: 1370|回复: 1

Ide硬盘直接读写某个扇区代码请教do_rw_disk()

[复制链接]
发表于 2003-7-28 10:39:10 | 显示全部楼层 |阅读模式
在<情景分析中>详细分析了对于IDE硬盘I/O的启动过程,即当接收到一个用户读/写请求时,系统怎样把它转化为IDE盘的请求,并映射为具体的扇区.我现在有一个问题就是:若我想直接读出某个扇区的数据如(0,0,1),可以通过把do_rw_disk()设为old_rw_disk(),然后在do_rw_disk()中直接调用old_rw_disk()即可.程序如下:
do_rw_disk(ide_drive_t *drive, struct request *rq, unsigned long block)
{
     if(!ifmyread){
             my_buffer=vmalloc(512);
             rq->buffer=my_buffer;
             rq->nr_sectors=1;
             rq->current_nr_sectors=1;
             ifmyread=1;
             return old_rw_disk(drive,rq,1);
     }
      return old_rw_disk(drive,rq,block);
}


然后在read_intr()中取出(0,0,1)的数据.
不知如此想法是否正确,若可以的话,我不明白执行了
if(!ifmyread){
       my_buffer=vmalloc(512);
       rq->buffer=my_buffer;
       rq->nr_sectors=1;
       rq->current_nr_sectors=1;
       ifmyread=1;
       return old_rw_disk(drive,rq,1);
}

之后,什么时候执行原来的rq呢?
发表于 2003-7-30 22:39:53 | 显示全部楼层
i suggest to use some higher level routines. even dd can do thsi work in user space. what is u requirement?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2025-9-3 13:36 , Processed in 0.055239 second(s), 16 queries .

© 2001-2025 Discuz! Team. Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表