Ссылка пространства пользователя SCSITask.h
Определения типов SCSITask и константы, используемые в ядре и пространстве пользователя.
Обратите внимание на то, что SCSITaskIdentifier является непрозрачным объектом и что непосредственно обескураживают кастингу SCSITaskIdentifier к любому другому типу. Реализация SCSITask изменяется при необходимости для размещения изменений в архитектуре, повышений производительности и исправлений ошибок.
Уровень устройств и драйверы протокольного уровня, которые должны получить доступ к информации, содержавшейся в SCSITask, должны использовать надлежащие методы доступа в IOSCSIPrimaryCommandsDevice.h или IOSCSIProtocolServices.h
Включенные заголовки
<IOKit/IOTypes.h><CoreFoundation/CoreFoundation.h><libkern/c++/OSObject.h>
-
Объявление
Objective C
typedef void ( *SCSITaskCompletion )( SCSITaskIdentifier completedTask );Обсуждение
Это - определение типа для подпрограмм завершения та работа с SCSITaskIdentifiers.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.6 и позже.
См. Обзор для документации уровня заголовка.
-
64-разрядное число для представления Устройства SCSI.
Объявление
Objective C
typedef UInt64 SCSIDeviceIdentifier;Обсуждение
Если идентификатор может или быть идентификатором инициатора или цели, SCSIDeviceIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.2 и позже.
-
64-разрядное число для представления Устройства инициатора SCSI.
Объявление
Objective C
typedef SCSIDeviceIdentifier SCSIInitiatorIdentifier;Обсуждение
Если идентификатор для инициатора только и не цели, то SCSIInitiatorIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.2 и позже.
-
Атрибуты для ответа службы задачи.
Объявление
Objective C
typedef enum SCSIServiceResponse { /*! */ kSCSIServiceResponse_Request_In_Process = 0, /*! */ kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE = 1, /*! */ kSCSIServiceResponse_TASK_COMPLETE = 2, /*! */ kSCSIServiceResponse_LINK_COMMAND_COMPLETE = 3, /*! */ kSCSIServiceResponse_FUNCTION_COMPLETE = 4, /*! */ kSCSIServiceResponse_FUNCTION_REJECTED = 5 } SCSIServiceResponse;Константы
-
kSCSIServiceResponse_Request_In_ProcesskSCSIServiceResponse_Request_In_ProcessНе определенный в спецификации SAM, но ответ службы, используемый для еще не завершающихся асинхронных команд.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILUREkSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILUREЗапрос на обслуживание перестал работать из-за поставки или целевого отказа.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_TASK_COMPLETEkSCSIServiceResponse_TASK_COMPLETEЗадача завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_LINK_COMMAND_COMPLETEkSCSIServiceResponse_LINK_COMMAND_COMPLETEСоединенная команда завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_FUNCTION_COMPLETEkSCSIServiceResponse_FUNCTION_COMPLETEФункция управления задачами завершилась.
Доступный в OS X v10.0 и позже.
-
kSCSIServiceResponse_FUNCTION_REJECTEDkSCSIServiceResponse_FUNCTION_REJECTEDФункция управления задачами была отклонена.
Доступный в OS X v10.0 и позже.
Обсуждение
Ответ Службы представляет состояние выполнения запроса на обслуживание, сделанного к Драйверу Protocol Services. Ответ Службы может только быть изменен Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.0 и позже.
-
-
64-разрядное число для представления уникального идентификатора задачи.
Объявление
Objective C
typedef UInt64 SCSITaggedTaskIdentifier;Обсуждение
Когда Задача имеет Атрибут Задачи кроме SIMPLE, Маркированный Идентификатор Задачи используется. Клиент Прикладного уровня SCSI, управляющий Логической единицей, для которой предназначается Задача, обязан гарантировать, что Идентификатор Тега задачи уникален. Нуль не может использоваться значение Тега, как это привыкло к тому, когда Маркированное значение Идентификатора Задачи необходимо для Задачи с атрибутом SIMPLE.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.2 и позже.
-
64-разрядное число для представления Целевого устройства SCSI.
Объявление
Objective C
typedef SCSIDeviceIdentifier SCSITargetIdentifier;Обсуждение
Если идентификатор для цели только и не инициатора, то SCSITargetIdentifier должен использоваться.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.2 и позже.
-
Атрибуты для поставки задачи.
Объявление
Objective C
typedef enum SCSITaskAttribute { kSCSITask_SIMPLE = 0, kSCSITask_ORDERED = 1, kSCSITask_HEAD_OF_QUEUE = 2, kSCSITask_ACA = 3 } SCSITaskAttribute;Константы
-
kSCSITask_SIMPLEkSCSITask_SIMPLEЗадача имеет простой атрибут.
Доступный в OS X v10.0 и позже.
-
kSCSITask_ORDEREDkSCSITask_ORDEREDЗадача имеет упорядоченный атрибут.
Доступный в OS X v10.0 и позже.
-
kSCSITask_HEAD_OF_QUEUEkSCSITask_HEAD_OF_QUEUEЗадача сделала, чтобы голова очереди приписала.
Доступный в OS X v10.0 и позже.
-
kSCSITask_ACAkSCSITask_ACAЗадача имеет атрибут «автоматическая сопряженная преданность».
Доступный в OS X v10.0 и позже.
Обсуждение
Атрибут Задачи определяет, как этой задачей нужно управлять, когда determing упорядочивают для организации очередей и представления к надлежащему серверу устройства. Атрибут Задачи установлен Прикладным уровнем SCSI и не может быть изменен Протокольным уровнем SCSI.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.0 и позже.
-
-
Объявление
Objective C
typedef OSObject * SCSITaskIdentifier;Обсуждение
Это - непрозрачный объект, представляющий задачу. Это используется так, чтобы драйверы и для Протокольного уровня SCSI и для Прикладного уровня SCSI не могли изменить объект SCSITask непосредственно, но должны были вместо этого использовать унаследованные методы сделать так. Это позволяет реализации SCSITask изменяться, непосредственно не влияя на драйверы уровня устройств и протокольного уровня. Кроме того, это предотвращает изменение свойств, которым не позволяют быть измененными данным уровнем.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.6 и позже.
-
Объявление
Objective C
typedef enum SCSITaskMode { kSCSITaskMode_CommandExecution = 1, kSCSITaskMode_Autosense = 2 } SCSITaskMode;Обсуждение
Режим SCSI Task используется Протокольным уровнем SCSI для указания, какой режим задача выполняет.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.6 и позже.
-
Атрибуты для состояния задачи.
Объявление
Objective C
typedef enum SCSITaskState { kSCSITaskState_NEW_TASK = 0, kSCSITaskState_ENABLED = 1, kSCSITaskState_BLOCKED = 2, kSCSITaskState_DORMANT = 3, kSCSITaskState_ENDED = 4 } SCSITaskState;Константы
-
kSCSITaskState_NEW_TASKkSCSITaskState_NEW_TASKСостояние задачи является новой задачей.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_ENABLEDkSCSITaskState_ENABLEDЗадача включена и поставлена в очередь.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_BLOCKEDkSCSITaskState_BLOCKEDЗадача блокируется.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_DORMANTkSCSITaskState_DORMANTЗадача бездействует.
Доступный в OS X v10.0 и позже.
-
kSCSITaskState_ENDEDkSCSITaskState_ENDEDЗадача завершена.
Доступный в OS X v10.0 и позже.
Обсуждение
Состояние задачи представляет текущее состояние задачи. Когда задача создается, состояние установлено в NEW_TASK. Протокольный уровень SCSI тогда скорректирует состояние, поскольку задача ставится в очередь и во время выполнения. Прикладной уровень SCSI может исследовать состояние для контроля динамики задачи. Состояние задачи может только быть изменено Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние.
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.0 и позже.
-
-
Атрибуты для состояния задачи.
Объявление
Objective C
typedef enum SCSITaskStatus { /*! */ kSCSITaskStatus_GOOD = 0x00, /*! */ kSCSITaskStatus_CHECK_CONDITION = 0x02, /*! */ kSCSITaskStatus_CONDITION_MET = 0x04, /*! */ kSCSITaskStatus_BUSY = 0x08, /*! */ kSCSITaskStatus_INTERMEDIATE = 0x10, /*! */ kSCSITaskStatus_INTERMEDIATE_CONDITION_MET = 0x14, /*! */ kSCSITaskStatus_RESERVATION_CONFLICT = 0x18, /*! */ kSCSITaskStatus_TASK_SET_FULL = 0x28, /*! */ kSCSITaskStatus_ACA_ACTIVE = 0x30, /*! */ kSCSITaskStatus_TaskTimeoutOccurred = 0x01, /*! */ kSCSITaskStatus_ProtocolTimeoutOccurred = 0x02, /*! */ kSCSITaskStatus_DeviceNotResponding = 0x03, /*! */ kSCSITaskStatus_DeviceNotPresent = 0x04, /*! */ kSCSITaskStatus_DeliveryFailure = 0x05, /*! */ kSCSITaskStatus_No_Status = 0xFF } SCSITaskStatus;Константы
-
kSCSITaskStatus_GOODkSCSITaskStatus_GOODЗадача завершилась с состоянием GOOD.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_CHECK_CONDITIONkSCSITaskStatus_CHECK_CONDITIONЗадача завершилась с состоянием CHECK_CONDITION. Дополнительная информация об условии должна быть доступной в данных чувственного опыта.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_CONDITION_METkSCSITaskStatus_CONDITION_METЗадача завершилась с состоянием CONDITION_MET.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_BUSYkSCSITaskStatus_BUSYЗадача завершилась с состоянием BUSY. Серверу устройства, возможно, понадобилось бы время для обработки запроса, и задержка может требоваться.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_INTERMEDIATEkSCSITaskStatus_INTERMEDIATEЗадача завершилась с состоянием INTERMEDIATE.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_INTERMEDIATE_CONDITION_METkSCSITaskStatus_INTERMEDIATE_CONDITION_METЗадача завершилась с состоянием INTERMEDIATE_CONDITION_MET.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_RESERVATION_CONFLICTkSCSITaskStatus_RESERVATION_CONFLICTЗадача завершилась с состоянием RESERVATION_CONFLICT.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_TASK_SET_FULLkSCSITaskStatus_TASK_SET_FULLЗадача завершилась с состоянием TASK_SET_FULL. Сервер устройства, возможно, должен выполнить задачу, прежде чем инициатор отправит другого.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_ACA_ACTIVEkSCSITaskStatus_ACA_ACTIVEЗадача завершилась с состоянием ACA_ACTIVE. Серверу устройства, возможно, понадобится инициатор для очистки Автосопряженного условия Преданности, прежде чем это будет реагировать на новые команды.
Доступный в OS X v10.0 и позже.
-
kSCSITaskStatus_TaskTimeoutOccurredkSCSITaskStatus_TaskTimeoutOccurredЕсли задача будет прервана Протокольным уровнем SCSI вследствие его превышающий значение тайм-аута, указанное задачей, то состояние задачи должно быть установлено в kSCSITaskStatus_TaskTimeoutOccurred.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_ProtocolTimeoutOccurredkSCSITaskStatus_ProtocolTimeoutOccurredЕсли задача будет прервана Протокольным уровнем SCSI вследствие его превышающий значение тайм-аута, указанное поддержкой протокола или связанной спецификации, то состояние задачи должно быть установлено в kSCSITaskStatus_ProtocolTimeoutOccurred.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeviceNotRespondingkSCSITaskStatus_DeviceNotRespondingЕсли задача будет неспособна быть поставленной вследствие отказа устройства, не принимающего задачу или устройство, подтверждая попытку отправить ему устройство, то состояние задачи должно быть установлено в kSCSITaskStatus_DeviceNotResponding. Это позволит драйверу Приложения SCSI выполнять необходимые шаги, чтобы попытаться восстановить устройство. Об этом нужно только сообщить после того, как драйвер Протокольного уровня SCSI делал попытку всего протокола определенные попытки восстановить устройство.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeviceNotPresentkSCSITaskStatus_DeviceNotPresentЕсли задача будет неспособна быть поставленной, потому что устройство было отсоединено, то состояние задачи должно быть установлено в kSCSITaskStatus_DeviceNotPresent. Это позволит Прикладному уровню SCSI останавливать отправку задач к устройству и, если поддерживается, выполнять любую обработку отказа устройства или системную очистку.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_DeliveryFailurekSCSITaskStatus_DeliveryFailureЕсли задача неспособна быть поставленной устройству вследствие отказа на Протокольном уровне SCSI, таком как сброс шины или коммуникационная ошибка, но устройство, как известно, функционирует должным образом, состояние задачи должно быть установлено в kSCSITaskStatus_DeliveryFailure. Об этом можно также сообщить, если задача не могла бы быть поставлена вследствие с тех пор исправленной ошибки протокола.
Доступный в OS X v10.3 и позже.
-
kSCSITaskStatus_No_StatuskSCSITaskStatus_No_StatusЭто состояние не определяется спецификациями SCSI, но должно здесь обеспечить состояние, которое может быть возвращено в случаях, где нет состояния, доступного от устройства или протокола, например, когда ответ службы не является ни TASK_COMPLETED, ни LINK_COMMAND_COMPLETE или когда ответ службы является SERVICE_DELIVERY_OR_TARGET_FAILURE, и причина отказа не могла быть определена.
Доступный в OS X v10.0 и позже.
Обсуждение
Состояние Задачи представляет состояние завершения задачи, предоставляющей Прикладному уровню SCSI дополнительную информацию о том, как проуступить в обработке выполненной задачи.
Спецификация Модели архитектуры SCSI только определяет значения состояния задачи для того, когда задача завершается с ответом службы или TASK_COMPLETED или LINK_COMMAND_COMPLETE.
Так как дополнительная информация поможет в восстановлении после ошибки, когда задача не будет выполнена устройством вследствие ответа службы kSCSIServiceResponse_SERVICE_DELIVERY_OR_TARGET_FAILURE, дополнительные стоимости были определены, который может быть возвращен Протокольным уровнем SCSI для информирования Прикладного уровня SCSI причины ошибки отправки.
Состояние Задачи может только быть изменено Протокольным уровнем SCSI. Прикладной уровень SCSI может только считать состояние
Оператор импорта
Objective C
#include <SCSITask.h>;Доступность
Доступный в OS X v10.0 и позже.
-
См. Обзор для документации уровня заголовка.
-
Объявление
Objective C
enum { /*! */ kSCSICDBSize_Maximum = 16, /*! */ kSCSICDBSize_6Byte = 6, /*! */ kSCSICDBSize_10Byte = 10, /*! */ kSCSICDBSize_12Byte = 12, /*! */ kSCSICDBSize_16Byte = 16 };Константы
-
kSCSICDBSize_MaximumkSCSICDBSize_MaximumЭто - самый большой размер, Блок Дескриптора Команды может быть как указан в SPC 2.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_6BytekSCSICDBSize_6ByteИспользуйте это для 6-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_10BytekSCSICDBSize_10ByteИспользуйте это для 10-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_12BytekSCSICDBSize_12ByteИспользуйте это для 12-байтового CDB.
Доступный в OS X v10.0 и позже.
-
kSCSICDBSize_16BytekSCSICDBSize_16ByteИспользуйте это для 16-байтового CDB.
Доступный в OS X v10.0 и позже.
Обсуждение
Константы Размера блока Дескриптора команды.
-
-
Объявление
Objective C
enum { /*! */ kSCSIDataTransfer_NoDataTransfer = 0x00, /*! */ kSCSIDataTransfer_FromInitiatorToTarget = 0x01, /*! */ kSCSIDataTransfer_FromTargetToInitiator = 0x02 };Константы
-
kSCSIDataTransfer_NoDataTransferkSCSIDataTransfer_NoDataTransferИспользуйте это для задач, не передающих данных.
Доступный в OS X v10.0 и позже.
-
kSCSIDataTransfer_FromInitiatorToTargetkSCSIDataTransfer_FromInitiatorToTargetИспользуйте это для задач, передающих данные от инициатора к цели.
Доступный в OS X v10.0 и позже.
-
kSCSIDataTransfer_FromTargetToInitiatorkSCSIDataTransfer_FromTargetToInitiatorИспользуйте это для задач, передающих данные от цели до инициатора.
Доступный в OS X v10.0 и позже.
Обсуждение
Константы DataTransferDirection.
-
-
Объявление
Objective C
enum { kSCSIUntaggedTaskIdentifier = 0 };Константы
-
kSCSIUntaggedTaskIdentifierkSCSIUntaggedTaskIdentifierЭто значение означает, что задача не маркирована.
Доступный в OS X v10.2 и позже.
Обсуждение
Немаркированный Идентификатор Задачи используется, чтобы указать, что никакой уникальный тег не связан с Задачей.
-
