struct bio {
sector_t bi_sector; /* 请求的起始地址 */
struct bio *bi_next; /* request queue link */
struct block_device bi_bdev; /* 请求的块设备 */
unsigned long bi_flags; /* 状态、命令 */
unsigned long bi_rw; /* 读写标志 */
unsigned short bi_vcnt; /* bio_vec的数量 */
unsigned short bi_idx; /* bio_vec列表的当前索引 */
unsigned short bi_phys_segments; /* 有多少块连续的内存 */
unsigned int bi_size; /* I/O请求的大小 */
unsigned short bi_hw_segments; /* number of segments after remapping */
unsigned int bi_hw_front_size; /* size of the first mergeable segment */
unsigned int bi_hw_back_size; /* size of the last mergeable segment */
unsigned int bi_max_vecs; /* 缓冲区的最大数量 */
struct bio_vec *bi_io_vec; /* 缓冲区列表 */
bio_end_io_t *bi_end_io; /* 请求完成函数*/
atomic_t bi_cnt; /* 引用计数 */
void *bi_private; /* 自定义 */
bio_destructor_t *bi_destructor; /* destructor */
}
我看了一下bio_vec的结构:
struct bio_vec {
struct page *bv_page; /* 缓冲区所在的页 */
unsigned int bv_len; /* 缓冲区大小 */
unsigned int bv_offset; /* 缓冲区在页中的偏移量 */
};
阅读(386) | 评论(0) | 转发(0) |