Chinaunix首页 | 论坛 | 博客
  • 博客访问: 290258
  • 博文数量: 49
  • 博客积分: 3083
  • 博客等级: 中校
  • 技术积分: 710
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 08:22
文章分类

全部博文(49)

文章存档

2009年(8)

2008年(41)

分类: LINUX

2008-09-08 11:29:53

/*
* 每个缓冲区都有一个对应的描述符,描述符用buffer_head结构体表示
* 被称为缓冲区头,在文件linux/buffer_head.h中定义
*/

struct buffer_head {
        unsigned long        b_state;          /* 缓冲区状态标志 */
        atomic_t             b_count;          /* 缓冲区使用记数 */
        struct buffer_head   *b_this_page;     /* 页面中的缓冲区 */
        struct page          *b_page;          /* 存储缓冲区的页面 */
        sector_t             b_blocknr;        /* 逻辑块号 */
        u32                  b_size;           /* 块大小 (以字节为单位) */
        char                 *b_data;          /* 页面中的缓冲区 */
        struct block_device  *b_bdev;          /* 块设备 */
        bh_end_io_t          *b_end_io;        /* I/O完成方法 */
        void                 *b_private;       /* 完成方法数据 */
        struct list_head     b_assoc_buffers;  /* 相关的映射链表 */
};

/*
*目前内核中块I/O操作的基本容器由bio结构体表示,bio结构体定义于linux/bio.g中
*/

struct bio {
        sector_t             bi_sector;         /* 磁盘上相关的扇区 */
        struct bio           *bi_next;          /* 请求链表 */
        struct block_device  *bi_bdev;          /* 相关的块设备 */
        unsigned long        bi_flags;          /* 状态和命令标志 */
        unsigned long        bi_rw;             /* 读还是写? */
        unsigned short       bi_vcnt;           /* bio_vecs偏移个个数 */
        unsigned short       bi_idx;            /* bi_io_vec的当前索引 */
        unsigned short       bi_phys_segments;  /* 结合后的片断数目 */
        unsigned short       bi_hw_segments;    /* 重映射后的片段数目 */
        unsigned int         bi_size;           /* I/O 记数 */
        unsigned int         bi_hw_front_size;  /* 第一个可合并的段大小 */
        unsigned int         bi_hw_back_size;   /* 最后一个可合并的段大小 */
        unsigned int         bi_max_vecs;       /* bio_vecs数目上限*/
        struct bio_vec       *bi_io_vec;        /* bio_vec链表 */
        bio_end_io_t         *bi_end_io;        /* I/O 完成方法 */
        atomic_t             bi_cnt;            /* 使用记数 */
        void                 *bi_private;       /* 拥有者私有方法 */
        bio_destructor_t     *bi_destructor;    /* 销毁方法 */
};

阅读(1490) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~