《Linux内核设计的艺术:图解Linux操作系统架构设计与实现原理》——2.11 初始化硬盘
2.11 初始化硬盘
硬盘的初始化为进程与硬盘这种块设备进行I/O通信建立了环境基础。
在hd_init()函数中,将硬盘请求项服务程序do_hd_request()与blk_dev控制结构相挂接,硬盘与请求项的交互工作将由do_hd_request()函数来处理,然后将硬盘中断服务程序hd_interrupt()与IDT相挂接,最后,复位主8259A int2 的屏蔽位,允许从片发出中断请求信号,复位硬盘的中断请求屏蔽位(在从片上),允许硬盘控制器发送中断请求信号。
执行代码如下:
//代码路径:init/main.c:
void main(void)
{
…
hd_init();
…
}
//代码路径:kernel/blk_dev/hd.c: //与rd_init类似,参看rd_init的注释