Ядро ОС Linux



         

2.6 Command()


Функция command() запускает команду SCSI и возвращается после ее завершения. Когда был создан оригинал кода SCSI, в нем не осуществлялась поддержка драйверов управляемых прерываниями. Старые драйвера менее эфеективны чем созданные на данный момент драйвера управляемые прерываниями, но более просты в написании. Для новых драйверов эта функция заменена на queuecommand(), как описано в следующей программе:

ststic volatile int internal_done_flag = 0; static volatile int internal_done_errcode = 0; static void internal_done(Scsi_Cmnd *SCpnt); { internal_done_errcode = SCpnt->result; ++internal_done_flag; } int aha1542_command(Scsi_Cmnd *SCpnt) { aha1542_queuecommand (SCpnt, internal_done ); while(!internal_done_flag); internal_done_flag = 0; return internal_done_errcode; }

Возвращаемое значение - то же, что и в переменной result в структуре Scsi_Cmnd. См 2.7.7.2.5 и 2.7.8.




Содержание  Назад  Вперед