Pilote de périphérique du client de bande USB
Objectif
Prend en charge le protocole USB (Universal Serial Bus) pour le pilote de périphérique de bande à accès séquentiel.
Syntaxe
#include <sys/devinfo.h>
#include <sys/usb.h>
#include <sys/tape.h>
#include <sys/usbdi.h>
Sous-programmes dépendant de l'unité
La plupart des opérations sur bande sont implémentées à l'aide des sous-routines open, close, readet write . Toutefois, la sous-routine openx doit être utilisée si l'unité doit être ouverte en mode Diagnostic .
Sous-routines ouvertes et proches
La sous-routine openx est principalement utilisée pour les commandes de diagnostic et les utilitaires. Vous devez disposer des droits appropriés pour exécuter le sous-programme. Si vous exécutez leopenx sous-programme sans l’autorité requise, le sous-programme renvoie une valeur de-1 et définit le numéro d'erreur variable globale à une valeur deEPERM .
La sous-routine openx active le mode Diagnostic pour le pilote de périphérique et désactive la logique de relance de commande. Cette action permet aux opérations ioctl d'exécuter des fonctions spéciales associées au traitement des diagnostics. La sous-routine openx peut également forcer l'ouverture et la conservation des réservations.
La sous-routine open applique une règle de réservation basée sur l'attribut Object Data Manager (ODM) reserve_policy . Les unités de bande USB peuvent ne pas prendre en charge la commande de réservation SCSI (Small Computer System Interface) et, par conséquent, ces commandes peuvent être ignorées.
Le paramètre ext transmis à la sous-routine openx sélectionne l'opération à utiliser pour l'unité cible. Le fichier /usr/include/sys/scsi.h définit les valeurs possibles pour le paramètre ext .
Le paramètre Ext peut contenir n'importe quelle combinaison logique des valeurs d'indicateur suivantes:
| Article | Descriptif |
|---|---|
| SC_FORCED_OPEN | Force l'accès à un périphérique en supprimant tout type de réservation sur le périphérique qui peut empêcher l'accès. Le type d'action à effectuer pour supprimer la réservation dépend du type spécifique de la réservation établie. Si cette option est spécifiée, une commande de réinitialisation de mémoire de masse est émise pour une bande USB, qui est un périphérique de stockage de masse. |
| SC_DIAGNOSTIC | Place le périphérique sélectionné en mode Diagnostic . Ce mode est singulièrement entrant. Cela signifie que lorsqu'une unité est en mode Diagnostic , les opérations SCSI sont effectuées pendant les opérations open ou close et la consignation des erreurs est désactivée. En mode Diagnostic , seules les opérations close et ioctl sont acceptées. Tous les autres sous-programmes pris en charge par le périphérique renvoient une valeur de-1 et réglez le numéro d'erreur variable globale à une valeur deEACCES .Une unité peut être ouverte en mode |
Sous-routine ioctl
Les opérations ioctl suivantes sont prises en charge sur les unités de bande USB:
| Opération | Descriptif |
|---|---|
| INFOS | Remplit l'argument devinfo transmis par l'appelant avec les valeurs suivantes: |
| STIOCTOP | Indique l'adresse d'une structure d'arrêt définie dans le fichier src/bos/usr/include/sys/tape.h . L'opération détectée dans la zone st_op de la structure d'arrêt est exécutée st_count fois, à l'exception des opérations de rembobinage, d'effacement et de conservation.Cette commande
|
| STIOCTOP (suite) |
|
| STPASSTHRU | Prend la commande SCSI dans la section scsi_cdb de la structure sc_passthru et l'envoie au pilote de bande USB. Cette opération est similaire à l'opération STIOCMD ioctl , à la seule exception des zones d'informations supplémentaires dans la structure sc_passthru qui fournit plus d'informations sur l'erreur.L'exemple suivant est un pseudo-code permettant d'exécuter l'opération |