QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1102|回复: 0

【ll_rw_block()读数出错,高手求助】

[复制链接]
发表于 2004-7-26 14:48:22 | 显示全部楼层 |阅读模式
目的:
对于给定的设备dev和设备上特定的块号block,读取这个block的内容到内存。

过程:
打开随便一个文件,得到文件号:fd=open("/home/a.c", O_RDONLY);
得到这个文件对应的file对象:file=fget(fd);
通过这个file对象,得到其所在设备的设备号:dev=file->f_dentry->d_inode->i_rdev
使用bh=getblk(dev,block,1024)取得一个其在内存中对应的buffer_head
然后,使用ll_rw_block(READ,1,bh)将这个块号在设备上对应的块的内容读入到buffer_head中,
然后,打印buffer_head的数据printk("*(bh->b_data));

问题:
这样可以读出数据,并显示,
但是
1)得到的设备号是5632,这样主设备号是16。似乎是错的吧?
2)每次得到的输出数据内容不一样。连续两次执行,内容都不一定一样,为什么呢?
3)如果最开始打开的是光驱中的文件,也就是说如果后面想读取光驱中的某个块,则不能读出数据。为什么?
3)如何要实现同样的目标,还有什么其他的方法么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 08:55 , Processed in 0.040386 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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