tirdwr(7) tirdwr(7)
NAME
tirdwr - STREAMS-Modul für die TI-Schreib-/Lese-Schnittstelle
BESCHREIBUNG
tirdwr ist ein STREAMS-Modul, das eine weitere Schnittstelle zu einem
Transport-Anbieter, der die Funktionen der Transport-Schnittstelle
(Transport Interface, TI) aus der Netzdienste-Bibliothek (Network Ser-
vices Library) unterstützt, zur Verfügung stellt. Diese alternative
Schnittstelle erlaubt es einem Benutzer, mit dem Transport-Protokoll-
Anbieter über die Systemaufrufe read(2) und write(2) zu kommunizieren.
Auch die Systemaufrufe putmsg(2) und getmsg(2) können benutzt werden.
Allerdings können putmsg und getmsg nur Datennachrichten zwischen
einem Benutzer und einem Stream übertragen.
Das tirdwr-Modul darf nur in einen Stream eingeklinkt werden [siehe
IPUSH in streamio(7)], der bei einem Transport-Protokoll-Anbieter
endet, der seinerseits das TI unterstützt. Nach dem Einklinken des
tirdwr-Moduls in einen Stream kann keine der Funktionen der Trans-
port-Schnittstelle verwendet werden. Nachfolgende Aufrufe von TI-
Funktionen verursachen einen Fehler im Stream. Nachdem dieser Fehler
entdeckt worden ist, liefern anschließende Systemaufrufe für den
Stream einen Fehler, wobei errno gleich EPROTO gesetzt ist.
Es folgen die Aktionen, die das Modul tirdwr ausführt, wenn es in den
Stream eingeklinkt oder aus diesem ausgeklinkt wird [siehe IPOP in
streamio(7)], oder wenn Daten durch dieses Modul fließen.
Einklinken (push)
Wenn das Modul in einen Stream eingeklinkt wird, dann prüft es
alle für den Benutzer bestimmten existierenden Daten, um sicher-
zustellen, daß nur reguläre Datennachrichten vorhanden sind. Es
ignoriert alle Nachrichten im Stream, die sich auf die Prozeß-
Verwaltung beziehen, wie z. B. Nachrichten, die Signale für die
dem Stream zugeordneten Benutzer-Prozesse erzeugen. Sind andere
Nachrichten vorhanden, dann kehrt IPUSH mit einem Fehler zurück
und errno ist gleich EPROTO.
Schreiben (write)
Das Modul führt die folgenden Aktionen auf Daten aus, die von
einem write-Systemaufruf stammen:
- Alle Nachrichten, außer solchen, die Steuerteile enthalten
(siehe Systemaufrufe putmsg und getmsg), werden auf transpa-
rente Weise an den strom-abwärtigen Nachbarn des Moduls wei-
tergeleitet.
- Alle Datennachrichten der Länge 0 werden freigegeben und nicht
an den strom-abwärtigen Nachbarn des Moduls weitergeleitet.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
tirdwr(7) tirdwr(7)
- Alle Nachrichten mit einem Steuerteil erzeugen einen Fehler.
Alle weiteren Systemaufrufe für diesen Stream schlagen fehl,
wobei errno gleich EPROTO gesetzt ist.
Lesen (read)
Das Modul führt die folgenden Aktionen auf Daten aus, die vom
Transport-Protokoll-Anbieter stammen:
- Alle Nachrichten mit Ausnahme solcher, die Steuerteile enthal-
ten (siehe Systemaufrufe putmsg und getmsg), werden auf trans-
parente Weise an den strom-abwärtigen Nachbarn des Moduls wei-
tergeleitet
- Folgende Aktionen werden bei Nachrichten mit einem Steuerteil
vorgenommen:
⊕ Nachrichten, die beschleunigte Daten darstellen, erzeugen
einen Fehler. Alle weiteren Systemaufrufe für diesen Stream
schlagen fehl, wobei errno gleich EPROTO gesetzt ist.
⊕ Für alle Nachrichten mit einem Steuerteil werden der Steu-
erteil aus der Nachricht entfernt, bevor die Nachrichten an
den strom-aufwärtigen Nachbarn weitergeleitet werden.
⊕ Nachrichten, die eine ordentliche Freigabe-Anzeige vom
Transport-Anbieter darstellen, erzeugen eine Nachricht der
Länge 0, die das Dateiende angibt, das an den Leser des
Streams gesendet wird. Die ordentliche Freigabenachricht
wird vom Modul freigegeben.
⊕ Nachrichten, die eine Verbindungsabbruch-Anzeige vom
Transport-Anbieter darstellen, sorgen dafür, daß alle fol-
genden write- und putmsg-Systemaufrufe fehlschlagen, wobei
errno gleich ENXIO gesetzt ist. Alle weiteren read- und
getmsg-Systemaufrufe liefern Nachrichten der Länge 0 (die
das Dateiende anzeigen), nachdem alle Daten gelesen worden
sind.
⊕ Mit Ausnahme der oben angeführten Regeln erzeugen alle
Nachrichten mit Steuerteilen einen Fehler und alle folgen-
den Systemaufrufe für den Stream schlagen fehl, wobei errno
gleich EPROTO gesetzt ist.
- Alle Nachrichten der Länge 0 werden vom Modul freigegeben und
nicht an den strom-aufwärtigen Nachbarn des Moduls weiterge-
leitet.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
tirdwr(7) tirdwr(7)
Ausklinken (pop)
Wird das Modul aus dem Stream ausgeklinkt oder wird der Stream
geschlossen, dann nimmt das Modul die folgende Aktion vor:
- Wurde vorher eine ordentliche Freigabe-Anzeige empfangen, dann
wird eine ordentliche Freigabe-Anforderung an die ferne Seite
der Transport-Verbindung gesendet.
SIEHE AUCH
getmsg(2), introprm2(2), putmsg(2), read(2), write(2), streamio(7),
timod(7).
Leitfaden für Programmierer: STREAMS
Leitfaden für Programmierer: Netzwerkschnittstellen
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98