hdlcio(7) (Nur RM400) hdlcio(7)
NAME
hdlcio - HDLC-spezifische ioctl-Aufrufe
SYNTAX
#include <hdlcio.h>
int ioctl(fildes, command, arg)
int fildes, command;
struct hdlcio *arg;
BESCHREIBUNG
Die HDLC-spezifischen ioctl-Kommandos dienen zur Einstellung der
Leitungs- und Protokoll-Parameter und zum Auslesen von Statusinforma-
tionen. Die Syntax des Systemaufrufs ist kompatibel zum Standard-
ioctl(2). Dabei werden die einzustellenden bzw. einzulesenden Parame-
ter in einer Struktur vom Typ struct hdlcio abgelegt, deren Adresse
als Argument arg übergeben wird.
Es werden folgende Kommandos unterstützt:
- HDLCRSET
- HDLCSET
- HDLCGET
- HDLCWAIT
- HDLCINQGET
Mit den Kommandos HDLCSET und HDLCRSET werden die einem Gerät zugehö-
rigen HDLC-Parameter eingestellt. Diese beiden Kommandos sind iden-
tisch und werden nur aus Kompatibilitätsgründen unterstützt.
Mit dem Kommando HDLCGET können die einem Gerät zugehörigen HDLC-
Parameter eingelesen werden.
Mit dem Kommando HDLCINQGET werden die Parameter in die durch arg spe-
zifizierte hdlcio-Struktur kopiert und zusätzlich die Dateneingabe vom
Terminal gestoppt. Insbesondere wird die Anzahl der Daten gemeldet,
die sich in der Inputqueue befinden. Da die Eingabe für dieses Gerät
blockiert wird, ändert sich diese Anzahl nicht mehr, bis die Daten
abgeholt werden oder das Gerät geschlossen wird. Sind von der Anwen-
dung alle Daten abgeholt worden, wird für dieses Gerät die Eingabe
wieder freigeschaltet und es können wieder Daten empfangen werden.
Mit dem Kommando HDLCWAIT kann bei einer Anwendung überprüft werden,
ob ein HDLC-Terminal die Abfragen (polls) der Primary beantwortet.
Falls ja, kommt das Kommando sofort zurück, anderenfalls wird der Pro-
zeß solange blockiert, bis das Terminal antwortet.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
hdlcio(7) (Nur RM400) hdlcio(7)
Die einzelnen Parameter sind in der Struktur hdlcio definiert.
struct hdlcio {
struct cbcount hdlciocount; /* HDLC-Zähler */
struct cbltimer hdlcioltimer; /* HDLC line timer */
struct cbttimer hdlciottimer; /* HDLC terminal timer */
struct cboutput hdlciooutput; /* HDLC output flags */
struct cbinput hdlcioinput; /* HDLC input flags */
};
Die in der Struktur hdlcio verwendeten Strukturen sind folgendermaßen
definiert:
struct cbcount { /* HDLC-spez. Zähler */
ushort ActPCnt; /* Wiederholungszähler für schnelle Polls */
byte RptCnt; /* Wiederholungszähler für I-Frames */
byte RespTOCnt; /* Responsetimeout-Zähler */
};
ACTPCnt Active Poll Count (Wiederholungszähler für schnelle Abfra-
gen). Gibt an, wie viele Male nach dem Senden oder Empfan-
gen eines I-Frames ohne Verzögerung abgefragt werden soll.
Der Zähler wird bei jedem Senden oder Empfangen eines I-
Frames neu gesetzt.
Beim Ablauf des Zählers geht die Primary für dieses Termi-
nal in den Zustand "inaktiv" über.
Standard: 2350 (dies entspricht einer Zeit von 2,5 Minuten
bei einer Abfragefrequenz von 50 ms).
RptCnt Repeat Count (Wiederholungszähler für I-Frames). Gibt an,
wie oft ein nicht quittierter I-Frame wiederholt wird, vor-
ausgesetzt das Terminal antwortet.
Beim Ablauf dieses Zählers wird eine Fehlermeldung erzeugt
und in den "Disconnected Mode" übergegangen.
RespTOCnt Response Timeout Count (Responsetimeout-Zähler). Gibt an,
wie oft ein Auftrag wiederholt wird, falls das Terminal
nicht antwortet. Dieser Parameter wird nicht mehr ausgewer-
tet. Es wird der Zähler RptCnt verwendet.
Standard: 6.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
hdlcio(7) (Nur RM400) hdlcio(7)
struct cbltimer { /* Leitungsspez. Timer */
ushort M1Timer; /* M1-Timer in msec. */
ushort M2Timer; /* M2-Timer in msec. */
ushort CharTimer; /* Charactertimer in msec. */
ushort LineType; /* Leitungstyp */
ushort ClockMode; /* Taktungsart */
ushort TrailPads; /* verzögerte S2-Rücknahme */
};
M1Timer M1-Überwachungstimer. Gibt die maximale Wartezeit für M1
(in msec.) an.
Dieser Parameter wird nicht mehr ausgewertet, aber aus Kom-
patibilitätsgründen weiter unterstützt.
M2Timer M2-Überwachungstimer. Gibt die maximale Wartezeit für die
M2-Meldung an.
Falls M2 nicht innerhalb dieser Zeit gesetzt wurde, wird
der Frame nicht gesendet und in den Fehlerzustand gewech-
selt.
Standard: 3000 ms.
CharTimer Character Timer. Gibt die maximale Zeit zum Senden und Emp-
fangen eines Frames an. D. h. das Senden und Empfangen des
gesamten Frames wird überwacht. Der Character Timer ist
abhängig von Leitungsgeschwindigkeit und Framelänge. Er
sollte so groß gewählt werden, daß alle Geschwindigkeiten
abgedeckt werden. Kann ein Frame in der angegebenen Zeit
nicht gesendet oder empfangen werden, so wird in den Feh-
lerzustand gewechselt.
Standard: 5000 ms.
LineType Leitungstyp. Gibt an, ob die Leitung als Vierdraht- oder
Zweidrahtleitung behandelt werden soll. Falls eine Zwei-
drahtleitung vorliegt, muß im Gegensatz zu einer Vierdraht-
leitung nach jedem Senden eines Frames das Signal S2
zurückgenommen werden.
Die Einstellung für die Ansteuerung einer Zweidrahtleitung
wird durch das Setzen von LineType auf den Wert TWOWIRE
realisiert.
Die Einstellung für die Ansteuerung einer Vierdrahtleitung
wird durch das Setzen von LineType auf den Wert FOURWIRE
realisiert.
Dieser Parameter betrifft nur den physischen Betrieb der
Leitung. Logisch wird immer "halbduplex" gearbeitet.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
hdlcio(7) (Nur RM400) hdlcio(7)
Standard: FOURWIRE.
ClockMode Taktungsart. Dieser Parameter wird nicht mehr ausgewertet,
aber aus Kompatibilitätsgründen weiter unterstützt. Die
Einstellung der Taktungsart wird über die Auswahl der
Geschwindigkeit durchgeführt.
Standard: 0
TrailPads Verzögerte S2-Rücknahme. Dieser Parameter wird nicht ausge-
wertet.
struct cbttimer { /* Terminalspez. Timer */
ushort SnrmRespTimer; /* Responsetimer im DM in msec. */
ushort RespTimer; /* Responsetimer im NRM in msec. */
ushort M5Timer; /* M5-Timer in msec. */
ushort IActPoll; /* Pollabstand für */
/* schnelle Polls in msec. */
ushort IInActPoll; /* Pollabstand für */
/* verzögerte Polls in msec. */
ushort INoRspPoll; /* Pollabstand im */
/* No-Response-Mod in msec. */
ushort IStdbyPoll; /* Pollabstand im */
/* Standby-Poll-Mode in msec. */
};
SnrmRespTimer
Set Normal Response Mode Timer. Gibt die maximale Wartezeit
auf einen "kurzen" Response (z. B. UA) an. Nach Ablauf des
Timer wird der Auftrag wiederholt.
Standard: 32 ms.
RespTimer Responsetimer im Normal Response Mode (NRM). Gibt die maxi-
male Wartezeit auf einen Response im NRM an, wenn ein I-
Frame erwartet wird. Nach Ablauf des Timer wird der letzte
Auftrag wiederholt.
Standard: 300 ms.
M5Timer M5-Überwachungstimer. Gibt die maximale Zeit an, die gewar-
tet wird, bis der zuletzt abgefragte Secondary das S2-
Signal wegnimmt. Nach Ablauf des Timers wird der nächste
Secondary abgefragt. Wird S2 nach der eingestellten Zeit
nicht zurückgenommen, wird trotzdem der nächste Secondary
abgefragt.
Standard: 10 ms.
IActPoll Active Poll. Abfragefrequenz für schnelle Abfragen. Gibt
an, wie schnell ein Terminal, das sich im aktiven Zustand
befindet, abgefragt werden soll.
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
hdlcio(7) (Nur RM400) hdlcio(7)
Standard: 50 ms.
IINActPoll Inactive Poll. Abfragefrequenz für verzögerte Abfragen.
Gibt an, wie schnell ein Terminal, das sich im inaktiven
Zustand befindet, abgefragt werden soll.
Ein Terminal befindet sich im inaktiven Zustand, wenn der
Wiederholungszähler für ACTPCnt abgelaufen ist.
Standard: 500 ms.
INoRspPoll No Response Poll. Abfragefrequenz für Terminals im No-
Response-Mode. Gibt an, wie schnell ein Terminal, das sich
im No-Response-Mode befindet, abgefragt werden soll.
Ein Terminal befindet sich im No-Response-Mode, falls es
längere Zeit nicht auf eine Abfrage geantwortet hat. Es ist
wahrscheinlich ausgeschaltet oder nicht angeschlossen.
Standard: 10000 ms.
IStdbyPoll Standby Poll. Abfragefrequenz für Terminals im Standby-
Poll-Mode. Gibt an, wie schnell ein Terminal, das sich im
Standby-Poll-Mode befindet, abgefragt werden soll.
Ein Terminal befindet sich im Standby-Poll-Mode, falls ein
open vorliegt, das Terminal aber noch nicht geantwortet hat.
Standard: 5000 ms.
struct cboutput { /* Parameter zur Ausgabesteuerung */
byte oflag; /* Flag zur Einstellung */
/* von geblocktem write */
ushort SUsrDataL; /* Länge der Sendedaten */
/* Standard: 100 Zeichen */
};
oflag output flag. Kennzeichen zur Einstellung von geblocktem
write/read. Für dieses Flag sind die Werte UNBLOCKED und
BLOCKED zulässig. Durch UNBLOCKED wird der Standardmodus
eingestellt. Durch BLOCKED wird der geblockte Modus akti-
viert, in dem die Applikation die Kontrolle über das Daten-
feld eines HDLC-Frames erhält.
Standard: UNBLOCKED.
SUsrDataL Send User Data Length. Länge der Sendedaten. Über diesen
Parameter kann die Applikation die maximale Länge eines
Frames einstellen. Als Maximalwert ist eine Länge von 1
KByte zulässig. Wird ein write mit n Daten abgesetzt, so
kann der write nur korrekt ausgeführt werden, falls n klei-
ner oder gleich der maximalen Sendeframegröße ist.
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
hdlcio(7) (Nur RM400) hdlcio(7)
Wird über ioctl für SUsrDataL ein Wert >1 KByte gesetzt, so
wird der ioctl mit dem Fehler EINVAL zurückgewiesen.
Standard: 100.
InqAnz Anzahl der Daten in der Inputqueue. Über dieses Feld kann
eine Anwendung die Anzahl der in der Inputqueue verfügbaren
Daten abfragen. Dieses Feld wird nur bei dem Kommando
HDLCINQGET ausgefüllt.
HINWEISE
Die link- bzw. leitungs-spezifischen Parameter können über ein belie-
biges Gerät, das zu diesem Link bzw. zu dieser Leitung gehört, einge-
stellt werden. Sie werden automatisch für alle an diesem Link bzw.
dieser Leitung betriebenen Geräte gesetzt.
DATEIEN
/usr/include/sys/hdlcio.h
SIEHE AUCH
ioctl(2), open(2), read(2), write(2), hdlcdefs(4), hios(7), sih(7).
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98