11)块设备初始化
blk_dev_init
1 |
|
块设备初始化是为后续读写磁盘做准备
块设备初始化
读取硬盘数据到内存中,是操作系统的一个基础功能。这个过程需要有块设备驱动程序、文件系统、缓冲区,甚至进程的阻塞与唤醒等功能的支持
1 |
|
根据代码很容易理解,将链表request的32个节点的dev初始化为-1,next初始化为NULL
request 结构体
1 |
|
这个结构体就代表了一次读写磁盘的请求
- dev 表示设备号,-1 就表示空闲。
- cmd 表示命令,其实就是 READ 或者 WRITE,也就表示本次操作是读还是写。
- errors 表示操作时产生的错误次数。
- sector 表示起始扇区。
- nr_sectors 表示扇区数。
- buffer 表示数据缓冲区,也就是读盘之后的数据放在内存中的什么位置。
- waiting 是个 task_struct 结构,可以表示一个进程,也就表示是哪个进程发起了这个请求。
- bh 是缓冲区头指针,这个后面讲完缓冲区的时候你就懂了,因为这个 request 是需要与缓冲区挂钩的。
- next 指向了下一个请求项。
这个 request 结构可以完整描述一个读盘操作。然后那request 数组就是把它们都放在一起,并且它们又通过 next 指针串成链表
11)块设备初始化
https://carl-5535.github.io/2024/08/07/Linux0.11/11)块设备初始化/