6.15. masked_status(屏蔽状态)

逻辑上:masked_status == ((status & 0x3e) >> 1) 。因此,'masked_status' 会从 'status' 中剥离厂商信息位,然后将其右移一位。 这样就可以更轻松地执行诸如 "if (CHECK_CONDITION == masked_status) ..." 之类的操作,并使用 <scsi/scsi.h> 中的定义。 此文件中定义的值为

注意:与通常的 SCSI 状态值相比,偏移量为 1 位

请注意,SCSI 3 定义了一些其他的状态代码。[1] masked_status 的类型为 unsigned char 。

注释

[1]

一些较低级别的驱动程序(例如,ide-scsi)即使在发生 CHECK_CONDITION 或 COMMAND_TERMINATED 状态时也会清除此 masked_status 字段。 但是,它们确实在 driver_status 字段中设置了 DRIVER_SENSE。 另外,(sb_len_wr > 0) 表示存在 sense 缓冲区。