SCIOSTUNIT (启动单元) SCSI 适配器设备驱动程序 ioctl 操作
用途
提供向所选 SCSI 设备发出 "SCSI 启动单元" 命令的方法。
描述
SCIOSTUNIT操作允许调用者向选定的 SCSI 适配卡发出 SCSI 启动单元命令。 系统管理例程可以使用此命令来帮助进行 SCSI 设备的配置。 对于SCIOSTUNIT操作,arg参数操作是sc_startunit结构的地址。 该结构在 /usr/include/sys/scsi.h文件中定义。
sc_startunit结构允许调用者指定要启动的 SCSI 适配器上设备的 SCSI 和逻辑单元号(LUN)ID。 SC_ASYNC标志(在传递的参数块的标志字节中)必须是该命令的 "首次尝试时未设置。
该start_flag参数块中的字段允许调用者指示SCIOSTUNIT操作的起始选项。 当start_flag字段设置为 "true",表示逻辑单元已准备就绪,可以使用。 如果为 FALSE ,那么将停止逻辑单元。
注意:当immed_flag字段设置为 "true "时,SCSI 适配卡设备驱动程序允许对任何或所有连接设备同时执行SCIOSTUNIT操作。 重要的是,在同时执行 SCSI 启动单元命令时,调用者应在连续的 SCSI 启动单元命令操作之间留出至少 10 秒的延迟时间。 此延迟确保为共享公共电源的设备提供足够的电力。 如果不按此方式延迟,可能会损坏系统装置或所连接的设备。 请参阅特定设备的技术规范手册以及适用于您的系统的相应硬件技术参考。
该immed_flag字段允许调用者指明SCIOSTUNIT操作的直接选项。 当immed_flag字段设置为 "true",设备收到命令后将立即返回状态。 如果此字段设置为 FALSE ,那么在操作完成后将返回状态。 调用者应设置immed_flag字段为 "true "时,允许对 SCSI 总线上的多个设备重叠执行SCIOSTUNIT操作。 在这种情况下,可以使用SCIOTUR操作来确定SCIOSTUNIT实际完成的时间。
注意:在执行SCIOSTUNIT操作期间,SCSI 适配卡设备驱动程序会执行正常的错误恢复程序。
返回值
SCIOSTUNIT操作成功完成后,返回值为 0。 否则,返回值为-1,并将 errno全局变量设置为以下值之一:
| 值 | 描述 |
|---|---|
| EFAULT | 指示发生内核与用户空间之间的错误副本。 |
| EINVAL | 表示在此命令之前未发出SCIOSTART命令。 |
| EIO | 指示发生了不可恢复的 I/O 错误。 如果收到EIO,调用者应至少重试该命令一次,因为第一条命令可能清除了设备的错误条件。 如果出现未修复的错误,适配器错误状态信息将记录在系统错误日志中。 |
| ENOCONNECT | 表示发生了总线故障。 调用者应响应重试,并在传入参数的标志字节中设置SC_ASYNC标志。 如果尝试重试不止一次,则只应在设置SC_ASYNC标志后重试最后一次。 通常, SCSI 适配器设备驱动程序无法确定哪个设备导致了 SCSI 总线故障,因此不会记录此错误。 |
| ENODEV | 指示没有 SCSI 控制器响应所请求的 SCSI 标识。 此条件并不一定是错误,并且不会记录。 |
| ENOMEM | 指示没有足够的内存可用于完成命令。 |
| ETIMEDOUT | 指示适配器在内部命令超时值到期之前未以状态进行响应。 如果收到ETIMEDOUT,调用者应至少重试该命令一次,因为第一条命令可能已清除了设备的错误条件。 此错误记录在系统错误日志中。 |
文件
| 项 | 描述 |
|---|---|
| /dev/scsi0, /dev/scsi1,..., /dev/scsin | 提供一个接口以允许 SCSI 设备驱动程序访问 SCSI 设备或适配器。 |
| /dev/vscsi0、"/dev/vscsi1"、...、/dev/vscsin | 提供一个接口以允许 SCSI-2 快速/宽适配器 /A 和 SCSI-2 差分快速/宽适配器 /A 设备驱动程序访问 SCSI 设备或适配器。 |