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 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:
P/00, P/01, P/02, ...P/1F
La session imprimante spécifiée par la variable P est égale à l'adresse de la session de l'unité de contrôle et la valeur de a est inférieure ou égale à 0x1F.
01 à 05
Numéro de session du terminal.
/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

La carte de communication reçoit des données de l'unité de contrôle dans des segments de données SNA individuels. Le pilote de périphérique informe l'application que des données sont disponibles. Lors de l'appel de sous-routine lecture , les données sont transférées à l'espace utilisateur de l'application à partir de l'espace noyau du pilote de périphérique (sans l'en-tête TCA de l'unité de contrôle) et le contrôle est retransmis à l'application. Le pilote d'unité accuse réception de chaque segment de données SNA reçu, ce qui rend inutile l'interrogation de l'application sur l'état de la liaison après l'appel à lecture .
Remarque: L'opération ioctl STAT_ACK n'est pas valide 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.

Les données reçues de l'hôte se présentent sous la forme d'un flux de données 3270 sortant. Le pilote de périphérique convertit le codes de commande dans le flux de données 3270 sortant.
Remarque: Les commandes d'écriture 3270 nécessitent que l'application envoie un statut à l'hôte. Le statut est envoyé à l'aide de l'opération ioctl WDC_SSTAT .

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:
WDI_DAVAIL
Les données sont disponibles en lecture. Les données sont mises en mémoire tampon dans le pilote ou dans la carte de communication. Les données doivent être lues immédiatement afin d'éviter qu'elles n'aient un impact sur les performances.

En mode DFT non SNA, un appel de sous-routine écriture ou writex ne peut pas aboutir tant que les données n'ont pas été lues. En mode DFT SNA, l'indicateur WDI_DAVAIL est utilisé uniquement pour indiquer que des données sont disponibles lorsque le pilote d'unité réveille l'application (en cas d'attente d'un appel interrogation ou sélectionner ) après avoir reçu des données de l'unité de contrôle.

COMM_WDI, WDI_PROGou MACH WDI
Indique une vérification de communication, une vérification de programme ou une vérification de machine, respectivement. Dans chacun de ces cas, leio_statuscontient un code de message qui indique le type de vérification.
WDI_FATAL
Indique qu'une erreur s'est produite et empêche toute communication ultérieure entre l'application et le pilote de périphérique, généralement une déconnexion coaxiale ou une défaillance de l'adaptateur. Cet indicateur peut être défini conjointement avec l'indicateur COMM_WDI, WDI_PROGou MACH WDI . Si l'incident de communication a été provoqué par une déconnexion coaxiale, laio_statuscontient la valeur WEB_610.
WDI_WCUS_30
Un rappel de vérification des communications se produit en cas de défaillance du réseau et lorsque l'unité de contrôle communique toujours avec la carte de communication. Le type d'erreur spécifique est contenu dans leio_statuszone en tant que5XXcode d'erreur. Le rappel de la vérification des communications est effacé automatiquement après la correction de l'état du réseau.
WDI_WCUS_31
Indique que le rappel de vérification des communications a été effacé.
Unité de contrôle WDI_CU
Valide uniquement pour le mode DFT SNA. Indique qu'une demande ACTLU ou DACTLU a été reçue par le pilote de périphérique. Les données d'accompagnement sont contenues dans laio_extrade la structure io3270 .
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:
STAT_ACK
Le flot de données 3270 précédemment reçu est valide et la réponse appropriée est envoyée à l'hôte.
RESET_STATUT
Envoie une clé RESET au gestionnaire d'unités DFT.
STAT_PRTCMP
La session imprimante a terminé l'impression des données.
STAT_BERR
Réception d'un ordre de mémoire tampon incorrect ou d'une adresse de mémoire tampon non valide.
STAT_UNSUP
Une commande 3270 non prise en charge a été reçue.

Le fichier /usr/include/sys/io3270.h contient les définitions des structures utilisées par le gestionnaire de périphériques.

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

La sous-routine lecture place les données reçues par la carte de communication dans une mémoire tampon.
Remarque: Pour définir le décalage dans la mémoire tampon de la carte de communication à partir de laquelle effectuer la lecture, utilisez l'opération ioctl EMSEEK .

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 .