了解 SCSI 设备驱动程序内部命令
在初始化,错误恢复以及打开或关闭操作期间, SCSI 设备驱动程序会启动一些与操作系统请求不直接相关的事务。 这些事务称为 内部命令 ,并且处理起来相对简单。
内部命令在几个方面不同于操作系统启动的事务。 主要区别在于 SCSI 设备驱动程序是生成与特定请求无关的 斯特鲁特湾 所必需的。 此外,实际 SCSI 命令通常比与数据传输相关的命令更以控制为导向。
对于具有短数据相传输 (小于或等于 256 个字节) 的命令,唯一的特殊要求是 SCSI 设备驱动程序必须将正在传输的内存固定在系统内存页中或从系统内存页中传输的内存中。 但是,出于系统硬件方面的考虑,当数据传输超过 256 字节时,必须对数据传输到系统内存页面采取额外的预防措施。 问题在于,任何正在进行 DMA 数据操作的系统内存区域都会导致包含该区域的整个内存页面变得不可访问。
因此,启动超过 256 个字节的内部命令的 SCSI 设备驱动程序必须已预先分配并锁定某个大小为系统页大小的某个多倍的区域。 驱动程序不得在此区域中放置在执行 I/O 进入或离开该页面时它可能需要访问的任何其他数据区。 从事务传递到适配器设备驱动程序的那一刻起,设备驱动程序必须避免分配的内存页,直到对该事务 (以及对这些页的任何其他事务) 调用设备驱动程序 约奥 one 例程为止。