USB 磁带客户机设备驱动程序
用途
支持顺序存取磁带设备驱动程序的通用串行总线 (USB) 协议。
语法
#include <sys/devinfo.h>
#include <sys/usb.h>
#include <sys/tape.h>
#include <sys/usbdi.h>
与设备相关的子例程
大多数磁带操作是使用 open, close, read和 write 子例程实现的。 但是,如果必须以 Diagnostic 方式打开设备,那么必须使用 openx 子例程。
打开和关闭子例程
openx 子例程主要用于诊断命令和实用程序。 需要适当的权限才能运行子例程。 如果在没有必要授权的情况下运行 openx 子例程,该子例程将返回 -1 值,并将 errno 全局变量设置为 EPERM 值。
openx 子例程对设备驱动程序启用 Diagnostic 方式,并禁用命令重试逻辑。 此操作允许执行与诊断处理关联的特殊功能的 ioctl 操作。 openx 子例程还可以强制打开和保留预留。
open 子例程应用基于对象数据管理器 (ODM) reserve_policy 属性的保留策略。 USB 磁带设备可能不支持 "小型计算机系统接口" (SCSI) 预留命令,因此可能会忽略这些命令。
传递到 openx 子例程的 ext 参数选择要用于目标设备的操作。 /usr/include/sys/scsi.h 文件定义 ext 参数的可能值。
扩展 参数可包含下列标志值的任何逻辑组合:
| 项 | 描述 |
|---|---|
| SC_FORCED_OPEN | 通过除去设备上可能禁止访问的任何类型的保留来强制访问该设备。 除去保留的行动类型取决于已建立的保留的特定类型。 如果指定了此标志,那么将对 USB 磁带 (即大容量存储批量设备) 发出大容量存储器重置命令。 |
| SC_DIAGNOSTIC | 将所选设备置于 Diagnostic 方式。 此方式是单入方式。 这意味着当设备处于 Diagnostic 方式时,将在 open 或 close 操作期间执行 SCSI 操作,并且将禁用错误日志记录。 在 Diagnostic 方式下,仅接受 close 和 ioctl 操作。 所有其他设备支持的子程序都返回 -1 值,并将 errno 全局变量设置为 EACCES 值。仅当当前未打开目标设备时,才能以 |
ioctl 子例程
USB 磁带设备上支持以下 ioctl 操作:
| 操作 | 描述 |
|---|---|
| IOCINFO | 使用以下值填充由调用者传递的 devinfo 参数: |
| STIOCTOP | 指定 src/bos/usr/include/sys/tape.h 文件中定义的停止结构的地址。 在停止结构中的 st_op 字段中找到的操作将运行 st_count 次,但倒带,擦除和保留操作除外。此
|
| SITOCTOP (续) |
|
| STPASSTHRU | 在 sc_passthru 结构的 scsi_cdb 部分中执行 SCSI 命令,并将其发出到 USB 磁带驱动程序。 此操作类似于 STIOCMD ioctl 操作,唯一的例外是 sc_passthru 结构中提供了有关错误的更多信息的其他信息字段。以下示例是用于向 USB 磁带发出 |