现在的位置: 首页 > 综合 > 正文

块设备访问

2013年01月01日 ⁄ 综合 ⁄ 共 572字 ⁄ 字号 评论关闭

struct bio *bio

bio是该请求的bio结构链表,不能直接对该成员进行访问,而要使用rq_for_each_bio访问

struct bio_vec *bvec;

bio_for_each_segment(bvec,bio,segno)

 

合成函数:

struct req_iterator iter;

struct bio_vec *bvec;

struct request  *req;

rq_for_each_segment(bvec,req,iter)

{

rq_iter_last(req,iter);//判断是否为最后一个bvec

}

 #define
rq_for_each_segment
(bvl, _rq, _iter) 
__rq_for_each_bio
(_iter.bio, _rq)  

bio_for_each_segment
(bvl, _iter.bio, _iter.i)

truct bio_vec结构:

struct bio_vec{

struct page *bv_page;

unsigned bv_len;

unsigned bv_offset;

}

 

unsigned long kmap(struct page *page);
void kunmap(struct page *page);
kmap 返回一个内核虚拟地址, 被映射到给定页, 如果需要并创建映射. kunmap 为给定页删除映射.

抱歉!评论已关闭.