Logically: masked_status == ((status & 0x3e) >> 1) . So 'masked_status' strips the vendor information bits off 'status' and then shifts it right one position. This makes it easier to do things like "if (CHECK_CONDITION == masked_status) ..." using the definitions in <scsi/scsi.h>. The defined values in this file are:
GOOD [0x00]
CHECK_CONDITION [0x01]
CONDITION_GOOD [0x02]
BUSY 0x04
INTERMEDIATE_GOOD 0x08
INTERMEDIATE_C_GOOD 0x0a
RESERVATION_CONFLICT 0x0c
COMMAND_TERMINATED 0x11
QUEUE_FULL 0x14
Note that SCSI 3 defines some additional status codes. [1] The type of masked_status is unsigned char .
[1] | Some lower level drivers (e.g. ide-scsi) clear this masked_status field even when a CHECK_CONDITION or COMMAND_TERMINATED status has occurred. However they do set DRIVER_SENSE in driver_status field. Also a (sb_len_wr > 0) indicates there is a sense buffer. |
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |