Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

2.7.7.2.3. info()

Функция info() возвращает указатель на статическую область, содержащую описание драйвера низкого уровня. Это описание содержится в переменной-указателе name и выводится во время загрузки.

2.7.7.2.4. queuecommand()

Функция queuecommand() осуществляет запуск команды SCSI адаптером, затем завершает работу. По завершению команды вызывается функция done() с указателем на структуру Scsi_Cmnd в качестве параметра. Это позволяет команде SCSI запуститься в режиме прерывания. Перед завершением работы функция queuecommand() должна выполнить следующие операции:

  • Сохранить указатель на структуру Scsi_Cmnd.
  • Сохранить указатель на функцию done() в качестве поля Scsi_done() в структуре Scsi_Cmnd. См. раздел 2.7.7.2.5 для более подробной информации.
  • Установить специальные переменные в Scsi_Cmnd, требуемые драйвером.
  • Запустить команду SCSI. Для расширенных host-адаптеров это может быть простейшая засылка команды в "mailbox" host-адаптера. Для менее "мудрых" адаптеров используется сначала слово ARBITRATION.

    Функция queuecommand() вызывается лишь в случае ненулевой переменной can_queue (см. 2.7.7.1.2). В ином случае для всех запросов используется функция command(). В случае успеха функция queuecommand() возвращает 0. (Высокоуровневый код SCSI игнорирует это возвращаемое значение).

    2.7.7.2.5. done()

    Функция done() вызывается после завершения команды SCSI. Единственный параметр, этой функции - указатель на структуру Scsi_Cmnd, используемую прежде функцией queuecommand(). Перед вызовом функции done() должна быть правильно установлена переменная result. Она имеет тип 32-битного целого, каждый байт которого имеет свое значение:

    Байт 0 - Содержит код SCSI STATUS, как описано в 2.7.2.1.

    1 - Содерит SCSI MESSAGE, как описано в 2.7.2.1
    2 - Содержит возвращаемый код host адаптера. Этим кодам присваивается значения в scsi.h:
      DID_OK Ошибок не обнаружено
      DID_NO_CONNECT SCSI SELECTION не может передаться из-за отсутствия устройства по указанному адресу.
      DID_BUS_BUSY Ошибка SCSI ARBITRATION
      DID_TIME_OUT Произошла приостановка работы процесса по неизвестной причине, возможно во время SELECTION или в ожидании RESELECTION.
      DID_BAD_TARGET SCSI ID цели такой-же как ID адаптера
      DID_ABORT Высоко-уровневый код вызывает низко-уровневую функцию abort().
      DID_PARITY Ошибка SCSI PARITY
      DID_ERROR Ошибка, не поддающаяся распознанию (к примеру ошибка самого адаптера)
      DID_RESET Высоко-уровневый код вызывает низко-уровневую функцию reset()
      DID_BAD_INTR Возникновение непредвиденного прерывания, которым не возожно управлять.

    Возврат DID_BUS_BUSY будет пытаться запустить команду еще раз, в то время как DID_NO_CONNECT сбросит команду.

    Байт 3 Этот байт предназначен для возвращения кода высокого уровня и устанавливается низким уровнем в 0.

    В настоящий момент драйвера низкого уровня не описывают сообщения об ошибках, поэтому легче всего для вас найти их определения в scsi.c вместо того чтобы исследовать существующие драйвера.


    [ Назад | Оглавление | Далее ]









  • helloworld.ru © 2001-2021
    Все права защищены