免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4504 | 回复: 8
打印 上一主题 下一主题

bio_vec,scatterlist? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-13 10:32 |只看该作者 |倒序浏览
struct bio_vec{
struct page *bv_page;
unsigned int bv_len;
unsigned int bv_offset;
}
这是bio_vec结构体,看宋宝华的书在介绍块设备驱动时上面一直讲段的概念,看了几遍才明白书上说得段是bio_vec结构体.但是我想问一下,是不是每个段只包含一页吗?可以包含多页吗?由谁指示,是不是由bv_len指明呢?如果包含多个页,那么另外的页是不是和page指向的页相邻,若不是,那这个段又是如何包含多个页呢?
还是这本书在讲DMA时,也一直说段的概念,不过那里的段指的是:scatterlist结构体,和bio_vec非常相似,同样也有上面的问题,可以包含多个页吗?
这是小弟的一点理解不知对不对,请高手不吝赐教。

论坛徽章:
0
2 [报告]
发表于 2009-05-13 11:02 |只看该作者
这里的段说的应该是bio结构吧,一个请求可以由多个bio组成.
bio下有个bi_io_vec结构体数组.
每个bi_io_vec标识一个page.

论坛徽章:
0
3 [报告]
发表于 2009-05-13 11:08 |只看该作者
刚翻了下书,有几个地方提到"段"呵.
在介绍bio_for_each_segment宏时,这里的段应该是指bi_io_vec结构.

论坛徽章:
0
4 [报告]
发表于 2009-05-13 14:19 |只看该作者
hb12112:每个bi_io_vec标识一个page.
每一个段只标识一个page吗?
bio_io_vec确实是一个段,那么小弟想知道1楼问几个问题的答案?

论坛徽章:
0
5 [报告]
发表于 2009-05-13 14:40 |只看该作者
bio_io_vec只能标识一个page,bv_len是在这个page中请求的长度.
vec的个数由bio结构中的bi_cnt字段标识.

DMA的scatterlist不知道.

论坛徽章:
0
6 [报告]
发表于 2009-05-14 11:37 |只看该作者
thanks very much!

论坛徽章:
0
7 [报告]
发表于 2014-05-21 09:42 来自手机 |只看该作者
你好,请问vec标识一个页,就是8扇区,这八个扇区在硬盘上也是连续的吧?还有,我取到八个扇区的数据后,是应该覆盖这个页,还是按照bvlen和bvoffset只写指定区域?

论坛徽章:
0
8 [报告]
发表于 2014-05-22 10:58 |只看该作者
bv_page只包含一个页。一个段是一个内存页或者内存页的一部分。bv_len是段长度。bv_offset是段在页中的偏移量。

论坛徽章:
0
9 [报告]
发表于 2014-05-22 10:59 |只看该作者
scatterlist没看过。应该是类似的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP