一般的主板上有两个硬盘通道,叫做 ata 通道 或 ide 通道。
第一个 ide 通道的中断信号挂在 8259A 的 IRQ14 上, 第二个挂在 IRQ15 上。
一个通道可以挂两块硬盘,对,两块硬盘共用一个中断接口。
每块硬盘又可以分区。分为主分区和逻辑分区。
硬盘驱动程序包括,硬盘的初始化,硬盘的读操作、写操作。
先定义数据结构
/* 分区结构 */
struct partition {
uint32_t start_lba; // 起始扇区
uint32_t sec_cnt; // 扇区数
struct disk* my_disk; // 分区所属的硬盘
struct list_elem part_tag; // 用于队列中的标记