gxqing 发表于 2003-7-28 10:39:10

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

在<情景分析中>详细分析了对于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呢?

Dragonfly 发表于 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?
页: [1]
查看完整版本: Ide硬盘直接读写某个扇区代码请教do_rw_disk()