Linux-块设备-数据结构
2017-12-16 16:40
176 查看
对于各种块设备,内核使用了一张块设备表blk_dev[]来进行管理。每种块设备都在块设备表中占据一项。
块设备表中每个块设备项的数据结构为:
// 块设备处理结构。
struct blk_dev_struct {
void (*request_fn)(void); //
请求处理函数指针。
struct request * current_request; //
当前处理的请求结构。
}
// 下面是请求队列中项的结构。其中如果字段dev = -1,则表示队列中该项没有被使用。
// 字段cmd可取常量 READ(0)或 WRITE(1)(定义在include/linux/fs.h中)。
// 其中,内核并没有用到waiting指针,起而代之地内核使用了缓冲块的等待队列。因为
// 等待一个缓冲块与等待请求项完成是对等的。
struct request {
intdev; /* -1 if no request */ //
发请求的设备号。
intcmd; /* READ or WRITE */ // READ或WRITE命令。
int errors; //操作时产生的错误次数。
unsigned long sector; //
起始扇区。(1块=2扇区)
unsigned long nr_sectors; //
读/写扇区数。
char * buffer; //
数据缓冲区。
struct task_struct * waiting; //
任务等待请求完成操作的地方(队列)。
struct buffer_head * bh; //
缓冲区头指针(include/linux/fs.h,68)。
struct request * next; //
指向下一请求项。
};
块设备表中每个块设备项的数据结构为:
// 块设备处理结构。
struct blk_dev_struct {
void (*request_fn)(void); //
请求处理函数指针。
struct request * current_request; //
当前处理的请求结构。
}
// 下面是请求队列中项的结构。其中如果字段dev = -1,则表示队列中该项没有被使用。
// 字段cmd可取常量 READ(0)或 WRITE(1)(定义在include/linux/fs.h中)。
// 其中,内核并没有用到waiting指针,起而代之地内核使用了缓冲块的等待队列。因为
// 等待一个缓冲块与等待请求项完成是对等的。
struct request {
intdev; /* -1 if no request */ //
发请求的设备号。
intcmd; /* READ or WRITE */ // READ或WRITE命令。
int errors; //操作时产生的错误次数。
unsigned long sector; //
起始扇区。(1块=2扇区)
unsigned long nr_sectors; //
读/写扇区数。
char * buffer; //
数据缓冲区。
struct task_struct * waiting; //
任务等待请求完成操作的地方(队列)。
struct buffer_head * bh; //
缓冲区头指针(include/linux/fs.h,68)。
struct request * next; //
指向下一请求项。
};
相关文章推荐
- linux 学习笔记--字符设备驱动相关数据结构
- 【linux驱动笔记】字符设备驱动相关数据结构与算法
- 【linux驱动笔记】字符设备驱动相关数据结构与算法
- Linux设备驱动程序学习(21)-内存映射和DMA-数据结构
- Linux设备模型基础---数据结构
- 网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )
- 第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)
- linux 设备驱动之数据类型
- 详解 linux mysqldump 导出数据库、数据、表结构
- linux常用c函数 数据结构及算法篇
- 宋牧春: Linux设备树文件结构与解析深度分析(2)
- Linux字符设备驱动结构
- ARM Linux对中断的处理--相关数据结构
- 简单谈一点linux内核中套接字的bind机制--数据结构以及端口确定
- 例说linux内核与应用数据通信(四):映射设备内核空间到用户态
- Linux文件存储结构,目录项、inode、数据块
- Linux基础数据结构——双向链表
- linux下I/O体系结构和设备驱动程序
- Linux+Shell获取及拷贝最新数据到远程设备
- linux虚拟文件系统VFS 的相关数据结构