Fichier spécial 3270cn
Objectif
Permet d'accéder aux adaptateurs de connexion 3270 via le gestionnaire d'unités d'adaptateur de connexion 3270.
Descriptif
Le fichier spécial 3270cn permet d'accéder au gestionnaire d'unités de la carte de connexion 3270 pour l'émulation de claviers-écrans et d'imprimantes 3270. Le gestionnaire d'unités est un gestionnaire d'unités multiplexé qui prend en charge une session 3270 logique indépendante sur chacun de ses canaux.
Le gestionnaire de périphériques prend en charge deux modes de fonctionnement:
| Article | Descriptif |
|---|---|
| Mode DFT (Distributed Function Terminal) | En mode DFT, l'adaptateur peut apparaître sous la forme de plusieurs sessions écran SNA ou non SNA, de sessions imprimante non SNA ou des deux, et il s'agit d'une unité intelligente pour l'unité de contrôle. Dans ce mode, le gestionnaire de périphériques permet d'émuler plusieurs claviers-écrans 3278/79. Si l'unité de contrôle connectée ne prend pas en charge le statut d'unité d'événement asynchrone étendue, le port de l'unité de contrôle ou le gestionnaire d'unité doit être configuré pour une seule session. |
| Mode CUT (émulation Control Unit Terminal) 3278/79 | En mode CUT, l'adaptateur apparaît comme un appareil à session unique et non intelligent pour l'unité de contrôle. Dans ce mode, le gestionnaire de périphériques permet d'émuler un seul clavier-écran 3278/79. |
Le gestionnaire d'unités prend en charge jusqu'à quatre adaptateurs de connexion 3270, chacun pouvant comporter jusqu'à cinq sessions DFT ou une session CUT.
Le fichier /usr/include/sys/io3270.h contient les définitions des structures utilisées par le gestionnaire de périphériques.
Usage Considerations
Lors de l'accès au gestionnaire d'unités de connexion 3270, les éléments suivants doivent être pris en compte:
| Article | Descriptif |
|---|---|
| Initialisation et arrêt du pilote | Le gestionnaire de périphériques peut être chargé et déchargé. Le gestionnaire de périphériques prend en charge les appels de configuration pour s'initialiser et se terminer lui-même, mais ne prend pas en charge l'appel de configuration pour interroger les données techniques essentielles (VPD). |
| Prise en charge des fichiers spéciaux | Les sous-routines autres que ouvrir et fermer sont abordées en ce qui concerne le mode dans lequel le gestionnaire de périphériques fonctionne. |
Prise en charge des sous-programmes
Le gestionnaire d'unités 3270 fournit une prise en charge spécifique à 3270 pour les sous-routines suivantes:
- ouvrir
- fermer
- read
- readx (mode DFT non SNA uniquement)
- écriture
- writex (mode DFT non SNA uniquement)
- ioctl
Ouvrir et fermer des sous-routines
Le gestionnaire de périphériques prend en charge le fichier spécial 3270cn en tant que fichier spécial multiplex de caractères. Le fichier spécial doit être ouvert en lecture et en écriture (O_RDWR).
Une attention particulière est accordée à la fermeture du fichier spécial 3270cn . Si le fichier a été ouvert en mode CUT et en mode de transfert de fichiers CUT, l'opération fermer pour le mode de transfert de fichiers CUT doit précéder l'opération fermer pour le mode CUT.
Le nom de fichier spécial utilisé dans un appel ouvrir prend différentes formes, en fonction de la manière dont le périphérique doit être ouvert. Les types de noms de fichiers spéciaux sont les suivants:
| Article | Descriptif |
|---|---|
| dev/3270c n /C | Démarre le gestionnaire de périphériques en mode CUT pour le port sélectionné, où la valeur de n est 0 < = n < = 7. |
| /dev/3270c n /F | Démarre le gestionnaire d'unités en mode de transfert de fichiers CUT pour le port sélectionné, où la valeur de n est 0 < = n < = 7. Le fichier doit être ouvert en mode CUT avant de pouvoir être ouvert en mode de transfert de fichiers CUT. |
| /dev/3270cn/ * | Démarre le gestionnaire d'unités en mode DFT pour le port sélectionné, où la valeur de n est 0 < = n < = 7 et l'astérisque (*) est défini par P/a, comme suit:
|
| /dev/3270c n | Démarre le gestionnaire d'unité en mode DFT pour le port sélectionné, où la valeur de n est 0 < = n < = 7. |
lire une sous-routine en mode DFT non SNA
Les données reçues par l'adaptateur de communication de l'hôte sont placées dans la mémoire tampon jusqu'à ce que le message soit terminé ou que la mémoire tampon soit saturée. Lorsque l'une ou l'autre de ces conditions se produit, le pilote renvoie le contrôle de programme à l'application. L'application peut déterminer le statut d'un appel de sous-routine lecture en émettant une opération ioctl WDC_INQ .
Si l'opération WDC_INQ renvoie un statut indiquant que davantage de données sont disponibles, l'application doit émettre immédiatement un autre appel lecture . Les données disponibles doivent être lues dès que possible afin d'éviter de dégrader les performances des liens ou des hôtes.
Si un appel lecture est effectué et qu'aucune donnée n'est disponible, le processus d'appel est bloqué jusqu'à ce que les données deviennent disponibles. Pour éviter le blocage, utilisez la sous-routine interrogation afin de déterminer si des données sont disponibles.
L'hôte envoie des données en tant que flux de données 3270 sortant. Le gestionnaire de périphériques convertit les codes de commande dans le flux de données 3270 sortant. Les codes de commande et les traductions sont les suivants:
| CODE COMMANDE | Dans le pilote | Hors du pilote |
|---|---|---|
| Effacer toutes les données non protégées | 0x6F | 0x0F |
| Effacer / Ecrire | 0xF5 | 0x03 |
| Effacement / Ecriture de remplacement | 0x7E | 0x0D |
| Mémoire tampon de lecture | 0xF2 | 0x02 |
| Lecture modifiée | 0xF6 | 0x06 |
| Écriture | 0xF1 | 0x01 |
| Ecrire un champ structuré | 0xF3 | 0x11 |
lire une sous-routine en mode DFT SNA
Contrairement au mode DFT non SNA, ni le chaînage ni l'interprétation des commandes ne sont effectués par le pilote d'unité en mode DFT SNA. L'application doit à la fois accumuler des segments de données SNA pour former une unité de réponse (RU) et interpréter les données 3270 qu'elle contient.
Sous-routine readx en mode DFT non SNA
Les données reçues par la carte de communication de l'hôte sont placées dans la mémoire tampon jusqu'à ce que le message soit terminé ou que la mémoire tampon soit saturée. A la fin de l'appel lecture , la structure io3270 pointée par l'extension lecture contient le statut. L'un des codes de statut suivants est défini dans leio_flagszone de la structure io3270 :
| Article | Descriptif |
|---|---|
| WDI_DAVAIL | Des données supplémentaires sont disponibles pour cette adresse de lien. |
| COMM_WDI | Une erreur de communication s'est produite. :NONE.io_statuscontient le code de message correspondant. |
| WDI_PROG | Une erreur de programme s'est produite. :NONE.io_statuscontient le code de message correspondant. |
| MACH WDI | Une erreur matérielle s'est produite. :NONE.io_statuscontient le code de message correspondant. |
| WDI_FATAL | Une erreur s'est produite et empêche toute communication supplémentaire avec l'hôte. Cet indicateur est éventuellement défini en plus de l'indicateur COMM_WDI, WDI_PROGou MACH WDI . Elle est également définie lorsqu'une défaillance coaxiale se produit. Dans ce cas, leio_statuscontient la valeur WEB_610, mais l'indicateur COMM_WDI, WDI_PROGou MACH WDI n'est pas défini. |
Lors de la réinitialisation, l'indicateur WDI_DAVAIL indique que la lecture des données marque l'achèvement d'un flux de données 3270 sortant.
Si l'indicateur WDI_DAVAIL indique que davantage de données sont disponibles, une autre sous-routine readx doit être émise immédiatement. Les données disponibles doivent être lues dès que possible afin d'éviter de dégrader les performances des liens ou des hôtes.
Si un appel de sous-routine readx est effectué et qu'aucune donnée n'est disponible, le processus d'appel est bloqué jusqu'à ce que les données soient disponibles. Pour éviter le blocage, utilisez la sous-routine interrogation afin de déterminer si des données sont disponibles.
Sous-routine d'écriture en mode DFT non SNA
En mode DFT non SNA, la sous-routine écriture envoie un flux de données 3270 entrant à l'hôte. La mémoire tampon indiquée dans un appel de sous-routine écriture doit contenir un flux de données 3270 entrant complet. L'appel écriture est terminé lorsqu'il a été transféré avec succès à partir de la mémoire tampon spécifiée dans l'appel de sous-programme.
Sous-routine d'écriture en mode DFT SNA
En mode DFT SNA, le sous-programme écriture transmet les données SNA au système hôte. Il peut s'agir d'un flot de données 3270 avec des en-têtes SNA ou d'une réponse SNA.
L'application envoie des données au pilote de périphérique, une unité de requête à la fois. Le pilote d'unité est alors chargé de segmenter les données SNA entrantes. Si un deuxième appel écriture est effectué avant le traitement du premier appel, le deuxième appel ne se poursuit pas tant que le pilote de périphérique n'est pas prêt. Une fois que les données sont transférées de l'espace utilisateur de l'application vers l'espace noyau du pilote de périphérique, la sous-routine écriture se termine et le contrôle est renvoyé à l'application.
Si le pilote de périphérique détecte une déconnexion coaxiale entre deux appels écriture , le deuxième appel écriture est renvoyé à l'application, avec la variable globale n ° d'erreur définie sur VALEUR EFAULT.
Sous-routine writex en mode DFT non SNA
La sous-routine writex envoie un flux de données 3270 entrant à l'hôte. La mémoire tampon indiquée dans un appel de sous-routine writex doit contenir un flux de données 3270 entrant complet.
La sous-routine écriture est terminée lorsqu'elle a correctement transféré les données de la mémoire tampon spécifiée. Une fois l'appel de sous-routine écriture terminé, la structure io3270 pointée par l'extension écriture contient le statut. L'un des codes de statut suivants est défini dans leio_flagszone de la structure io3270 :
| Article | Descriptif |
|---|---|
| WDI_DAVAIL | Indique que des données sont disponibles pour cette adresse de liaison ; les données doivent être lues avant toute écriture. |
| COMM_WDI | Indique une erreur de communication. :NONE.io_statuscontient le code de message correspondant. |
| WDI_PROG | Indique une erreur de programme. :NONE.io_statuscontient le code de message correspondant. |
| MACH WDI | Indique une erreur matérielle. :NONE.io_statuscontient le code de message correspondant. |
Sous-routine ioctl en mode DFT
Le sous-programme ioctl peut être émis vers le gestionnaire d'unités lorsqu'il est en mode DFT. Les opérations ioctl disponibles sont les suivantes:
| Article | Descriptif |
|---|---|
| IOCINFO | Renvoie le numéro de terminal logique. Ce nombre correspond à la représentation EBCDIC du type de contrôleur et du protocole de connexion du contrôleur dans la structure iocinfo . |
| WDC_AUTO | Valide uniquement pour le mode DFT non SNA. Fournit au gestionnaire l'option permettant d'accuser automatiquement réception d'un flux de données 3270 valide. Un accusé de réception est envoyé uniquement si le début du flux de données 3270 comprend les éléments suivants:0xF3 00 06 40 00 F1 C2 xx xx 10 14, où lexxLes champs ne sont pas examinés. Cette commande permet également au pilote de ne pas indiquer d'accusé de réception à la réception de données. |
| WDC_INQ | Interroge le statut du dernier appel lecture ou écriture non SNA émis par l'application. De plus, l'opération WDC_INQ détermine si des données sont disponibles en lecture. Le statut est placé dans leio_flagsde la structure io3270 . Cette zone accepte les valeurs suivantes:
|
| WDC_POR | L'adresse de liaison est d'abord désactivée, puis réactivée pour émuler une fonction de réinitialisation à la mise sous tension du terminal 3270. |
| WDC_SSTAT | Valide uniquement pour le mode DFT non SNA. Envoie le statut à l'hôte. La zone d'argument contient l'une des valeurs suivantes:
|
Conditions d'erreur en mode DFT
Les conditions d'erreur suivantes peuvent être renvoyées lors de l'accès au gestionnaire de périphériques via le fichier spécial 3270cn :
| Article | Descriptif |
|---|---|
| EBUSY | Une ouverture a été demandée pour un canal déjà ouvert. |
| VALEUR EFAULT | Une mémoire tampon spécifiée par l'appelant n'était pas valide. |
| EINTR | Un appel de sous-programme a été interrompu. |
| EINVAL | Un argument non valide a été reçu. |
| EIO | Une erreur d'E-S irrémédiable s'est produite sur le transfert de données demandé. |
| ENODEV | Une ouverture a été demandée pour un canal non valide. |
| ENOMEM | Le pilote n'a pas pu allouer de mémoire à utiliser dans le transfert de données. |
| ENXIO | Une opération a été demandée pour un numéro d'unité secondaire non valide. |
lire une sous-routine en mode CUT
Deux opérations ioctl contrôlent le mode de fonctionnement de la sous-routine lecture : les opérations EMNWAIT et EMWAIT . L'opération EMNWAIT indique que les appels de lecture suivants doivent être effectués immédiatement. L'opération ioctl EMWAIT (valeur par défaut) indique que les appels de lecture doivent être satisfaits uniquement après qu'une interruption de l'unité de contrôle indique que quelque chose a changé sur l'écran. Les interruptions de l'unité de contrôle sont les suivantes:
| Article | Descriptif |
|---|---|
| Buffer Modification Complete | La sous-routine lecture renvoie le nombre d'octets demandés. |
| Load I/O Address Command Decoded | La sous-routine lecture renvoie 0 pour le nombre d'octets lus. |
écrire une sous-routine en mode CUT
La sous-routine écriture envoie un flux de données 3270 entrant à l'hôte. La mémoire tampon indiquée dans une sous-routine écriture doit contenir un flux de données 3270 entrant complet. Pour définir le décalage dans la mémoire tampon de la carte de communication afin de commencer à écrire, utilisez l'opération ioctl EMSEEK .
Sous-routine ioctl en mode CUT
La sous-routine ioctl peut être envoyée au gestionnaire de périphériques en mode CUT. Les opérations ioctl suivantes sont acceptables:
| Article | Descriptif |
|---|---|
| EMKEY | Envoie un scancode à l'adaptateur d'émulation. Le code d'analyse est logiquement associé à l'opération EMKEY et le résultat est utilisé comme zone de commande dans l'appel de sous-routine ioctl . |
| EMCPOS | Renvoie la position du curseur par rapport au début de la mémoire tampon de la carte de communication. |
| EMXPOR | Désactive l'adresse de liaison, puis la réactive pour émuler une fonction de réinitialisation à la mise sous tension du terminal 3270. |
| EMNWAIT | Indique que les appels de sous-routine lecture doivent être satisfaits immédiatement. |
| EMWAIT | Indique que les appels de sous-programmes lecture doivent être satisfaits uniquement après une modification de la mémoire tampon d'émulation ou de la position du curseur (il s'agit du paramètre par défaut). |
| EMEVISND | Renvoie le contenu en cours du registre d'émulation Visual / Sound dans leinteger:NONE. L'adresse de cette zone est spécifiée comme argument de l'opération EMEVISND . |
| EMIMASK | Fournit un masque pour spécifier les interruptions qui apparaissent. La zone d'argument indique l'adresse du masque. Les bits de poids faible du masque (0 à 7) correspondent aux bits 0 à 7 du registre d'état d'interruption. Les bits 8 à 15 du masque correspondent aux bits 0 à 7 du registre visuel / sonore. Cette opération permet au conducteur d'ignorer les interruptions visuelles ou sonores à l'exception des bits spécifiquement masqués ON. Lorsqu'un bit est activé, l'interruption qui correspond à cette position de bit apparaît. Les interruptions qui correspondent à des positions de bit hors fonction (0) dans le masque sont supprimées par le gestionnaire de périphériques. Le paramètre de masque précédent est renvoyé à l'appelant dans la zone de masque. Les bits d'état d'interruption et les bits visuels ou sonores sont documentés dans le document IBM 3270 Connection Technical Reference. |
| IOCINFO | Renvoie une structure d'informations d'unité, comme défini dans le fichier /usr/include/sys/devinfo.h , à la zone spécifiée par l'utilisateur. :NONE.devtypea la valeur DD_EM78, qui est définie dans le fichier devinfo.h , et la valeur de la zone indicateur a la valeur 0. |
| EMSEEK | Définit le décalage dans la mémoire tampon de la carte de communication pour commencer un appel de sous-routine lecture ou écriture . |
Conditions d'erreur en mode CUT
Les conditions d'erreur suivantes peuvent être renvoyées lors de l'accès au gestionnaire de périphériques via le fichier spécial dev/3270cn :
| Article | Descriptif |
|---|---|
| EBUSY | Une ouverture a été demandée pour un canal déjà ouvert. La mémoire tampon de frappe est saturée. |
| VALEUR EFAULT | Une mémoire tampon spécifiée par l'appelant n'est pas valide. |
| EINTR | Un appel de sous-programme a été interrompu. |
| EINVAL | Un argument non valide a été spécifié dans un appel ioctl . |
| EL3RST | Une commande réinitialisation a été reçue par l'adaptateur de communications. |
| CONNEXION | La connexion à l'unité de contrôle s'est arrêtée alors qu'une opération lecture , pour laquelle l'opération ioctl EMWAIT a été spécifiée, était en attente. |
| EIO | Une erreur d'E-S irrémédiable s'est produite sur le transfert de données demandé. |
| ENXIO | Une opération a été demandée pour un numéro d'unité mineur incorrect. |
Ce fichier spécial requiert l'adaptateur de connexion 3270 IBM .