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呢? i suggest to use some higher level routines. even dd can do thsi work in user space. what is u requirement?
页:
[1]