ldterm(7) ldterm(7)
NAME
ldterm - Standard-Leitungsprozedur-Modul unter STREAMS
BESCHREIBUNG
ldterm ist ein STREAMS-Modul, das die meisten Eigenschaften der
termio(7)-Terminalschnittstelle bietet. Dieses Modul führt keine
Geräte-Steuerfunktionen der niedrigsten Ebene aus, so wie sie von den
Bits in ccflag oder von den Bits IGNBRK, IGNPAR, PARMRK oder INPCK
von ciflag in der termio/termios-Struktur angegeben werden; diese
Funktionen müssen vom Treiber oder von Modulen ausgeführt werden, die
unterhalb des Moduls ldterm eingeklinkt sind. Alle anderen
termio/termios-Funktionen werden von ldterm ausgeführt; allerdings
benötigen einige dieser Funktionen in manchen Fällen die Zusammenar-
beit mit dem Treiber oder anderen, unterhalb von ldterm eingeklinkten
Modulen. Dazu gehört das Bit IXOFF in ciflag und die Verzögerungen,
die in coflag angegeben sind.
ldterm behandelt auch EUC- und Multibyte-Zeichen und mapchan-Tabellen.
Der Rest dieses Abschnitts beschreibt die Verarbeitung verschiedener
STREAMS-Nachrichten auf der Lese- und der Schreibseite.
Verhalten auf der Leseseite
Verschiedene STREAMS-Nachrichten werden folgendermaßen verarbeitet:
MBREAK Wenn diese Nachricht eintrifft, dann wird entweder ein
Unterbrechungs-Signal erzeugt oder die Nachricht wird so
behandelt, als sei sie eine MDATA-Nachricht, die ein ein-
zelnes ASCII NUL-Zeichen enthält, je nachdem, welchen
Zustand das Kennzeichen BRKINT hat.
MDATA Diese Nachricht wird normalerweise gemäß der Standard-
Eingabeverarbeitung von termio behandelt. Ist ICANON
gesetzt, so wird eine einzelne Eingabeeinheit ("Zeile") in
einem internen Puffer gesammelt und dann stream-aufwärts
gesendet, wenn ein Zeilenende-Zeichen eintrifft. Ist ICANON
nicht gesetzt, dann findet eine andere Eingabeverarbeitung
statt und die verarbeiteten Daten werden stream-aufwärts
weitergeleitet.
Wenn die Ausgabe als Ergebnis des Eintreffens von Zeichen
(üblicherweise von <CNTRL-Q> und <CNTRL-S>) angehalten oder
gestartet werden soll, dann werden MSTOP- und MSTART-
Nachrichten stream-abwärts gesendet. Ist IXOFF gesetzt und
soll die Eingabe als Ergebnis der Flußkontrolle angehalten
oder gestartet werden, dann werden MSTOPI- und MSTARTI-
Nachrichten stream-abwärts gesendet.
MDATA-Nachrichten werden wie benötigt stream-abwärts
gesendet, um die Echo-Funktion auszuführen.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
ldterm(7) ldterm(7)
Soll ein Signal erzeugt werden, so wird eine MFLUSH-Nach-
richt mit einem Kennzeichen der Art FLUSHR in die Lese-
Queue eingetragen. Wenn das Signal auch Ausgabe leeren
soll, dann wird eine MFLUSH-Nachricht mit dem Kennzeichen
FLUSHW stream-abwärts gesendet.
MCTL Wenn der Datenpuffer der Nachricht die Größe einer Struktur
struct iocblk hat, dann ermittelt ldterm, wo die
termio(7)-Verarbeitung stattfinden soll. Wenn die Kompo-
nente ioccmd der iocblk-Struktur gleich MCNOCANON ist,
dann wird die normalerweise für alle MDATA-Nachrichten
durchgeführte Standardverarbeitung deaktiviert und diese
Nachrichten werden unverändert weiter stream-aufwärts
gereicht; dies ist für die Verwendung solcher Module oder
Treiber gedacht, die eine eigene Eingabeverarbeitung durch-
führen. Ist das Kommando gleich MCDOCANON, dann wird die
gesamte Eingabeverarbeitung aktiviert. Ist das Kommando
gleich MCPARTCANON, dann wird eine MDATA-Nachricht mit
einer termios-Struktur erwartet, die der ursprünglichen
MCTL-Nachricht zugefügt wird. Das ldterm-Modul überprüft
die Komponenten iflag, oflag und lflag der termios-Struktur
und verarbeitet von da an nur noch diejenigen Kennzeichen,
die nicht gesetzt sind. Wird keines der angeführten Komman-
dos gefunden, dann wird die Nachricht ignoriert. In jedem
Fall wird die Nachricht weiter stream-aufwärts geleitet.
MFLUSH Alle Daten-Nachrichten werden aus der Lese-Queue des Moduls
entfernt und die bisher gesammelten Daten der Eingabeein-
heit werden ebenfalls verworfen. Die Nachricht wird
stream-aufwärts weitergeleitet.
MIOCACK Die in der an den Prozeß zurückzugebenden Nachricht enthal-
tenen Daten werden, wenn nötig, vergrößert. Die Nachricht
wird stream-aufwärts weitergeleitet.
Alle anderen Nachrichten werden unverändert stream-aufwärts weiterge-
leitet.
Verhalten auf der Schreibseite
Die verschiedenen STREAMS-Nachrichten werden folgendermaßen verarbei-
tet:
MFLUSH Alle Daten-Nachrichten werden aus der Schreib-Queue des
Moduls entfernt. Die Nachricht wird stream-abwärts weiter-
geleitet.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
ldterm(7) ldterm(7)
MIOCTL Die Funktion des jeweiligen ioctl-Aufrufs wird ausgeführt
und die Nachricht wird in den meisten Fällen stream-abwärts
weitergeleitet. Die ioctl-Kommandos TCFLSH und TCXONC kön-
nen vollständig im Modul ldterm verarbeitet werden, so daß
eine Antwort stream-aufwärts, die Nachricht jedoch nicht
weiter stream-abwärts gesendet wird.
MDATA Wenn OPOST oder sowohl XCASE und ICANON gesetzt ist, dann
wir die Ausgabeverarbeitung durchgeführt und die verarbei-
tete Nachricht wird zusammen mit eventuell erzeugten
MDELAY-Nachrichten stream-abwärts weitergeleitet. Andern-
falls wird die Nachricht unverändert stream-abwärts weiter-
geleitet.
Alle übrigen Nachrichten werden unverändert stream-abwärts weiterge-
leitet.
ioctl-Kommandos
Die folgenden ioctl-Kommandos werden vom Modul ldterm verarbeitet.
Alle anderen werden stream-abwärts weitergeleitet. EUCWSET und
EUCWGET sind ioctl-Aufrufe der Art ISTR, wogegen die anderen aufge-
führten ioctl-Kommandos von der Art TRANPARENT sind.
TCGETS/TCGETA
Die Nachricht wird stream-abwärts weitergeleitet; trifft
eine Bestätigung ein, dann werden die vom Treiber und von
den Modulen übergebenen Daten erweitert und die Bestätigung
wird stream-aufwärts weitergeleitet.
TCSETS/TCSETSW/TCSETSF/TCSETA/TCSETAW/TCSETAF
Die Parameter, die das Verhalten von ldterm steuern, werden
geändert. Wenn ein Modus erfordert, daß Optionen des
Stream-Kopfs geändert werden, dann wird eine MSETOPTS-
Nachricht stream-aufwärts gesendet. Wird ICANON ein- oder
ausgeschaltet, dann wird das Lesen beim Stream-Kopf umge-
schaltet auf "Nachrichten nicht verwerfen" oder
"Bytestrom-Modus". Wird TOSTOP ein- oder ausgeschaltet,
dann wird die entsprechende Eigenschaft beim Stream-Kopf
ein- oder ausgeschaltet.
TCFLSH ist das Argument gleich 0, dann wird eine MFLUSH-Nachricht
mit dem Kennzeichen FLUSHR stream-abwärts gesendet und in
die Lese-Queue eingetragen. Ist das Argument gleich 1, so
werden alle Daten-Nachrichten aus der Schreib-Queue ent-
fernt, und es wird eine MFLUSH-Nachricht mit dem Kennzei-
chen FLUSHW stream-aufwärts und -abwärts gesendet. Wenn das
Argument gleich 2 ist, dann werden alle Daten-Nachrichten
aus der Schreib-Queue entfernt und es wird eine MFLUSH-
Nachricht mit dem Kennzeichen FLUSHRW stream-abwärts gesen-
det und in die Lese-Queue eingetragen.
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
ldterm(7) ldterm(7)
TCXONC Ist das Argument gleich 0 und ist die Ausgabe nicht bereits
angehalten, dann wird eine MSTOP-Nachricht stream-abwärts
gesendet. Ist das Argument gleich 1 und die Ausgabe ange-
halten, dann wird eine MSTART-Nachricht stream-abwärts
gesendet. Ist das Argument gleich 2 und die Eingabe ist
noch nicht angehalten, dann wird eine MSTOPI-Nachricht
stream-abwärts gesendet Beim Argument 3 und angehaltener
Eingabe wird eine MSTARTI-Nachricht stream-abwärts gesen-
det.
TCSBRK Die Nachricht wird stream-abwärts weitergeleitet und der
Treiber hat die Möglichkeit, die Daten auszugeben und eine
MIOCACK-Nachricht stream-aufwärts zu senden.
EUCWSET Dieser Aufruf nimmt einen Zeiger auf eine eucioc-Struktur
und verwendet diesen, die lokalen Definitionen der EUC-
Leitungsprozedur für die nachfolgend zu verwendenden
Zeichensatz-Breiten zu setzen. Innerhalb des Streams kann
die Leitungsprozedur optional andere Module über diese Ein-
stellungen unterrichten, indem sie MCTL-Nachrichten ver-
sendet.
EUCWGET Dieser Aufruf nimmt einen Zeiger auf eine eucioc-Struktur
und verwendet diesen, um darin die aktuell von der EUC-
Leitungsprozedur verwendeten Zeichensatz-Breiten zurückzu-
liefern.
LSDMAP/LDGMAP/LDNMAP
Mit diesen Aufrufen kann eine mapchan-Tabelle geladen,
gelesen oder gelöscht werden. LSDMAP und LDGMAP benötigen
einen Zeiger auf eine emtab-Struktur der Größe ETABSZ, die
die zu ladende Tabelle enthält bzw. in die die geladene
Tabelle geschrieben wird. Diese Aufrufe werden von dem Kom-
mando mapchan(1M) verwendet.
SIEHE AUCH
mapchan(1M), termios(3C), mapchan(4), console(7), ports(7), termio(7).
Leitfaden für Programmierer: STREAMS
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98