Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ ldterm(7) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

mapchan(1M)

termios(3C)

mapchan(4)

console(7)

ports(7)

termio(7)

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

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026