sad_strm(7) sad_strm(7)
NAME
sadstrm - Verwaltungstreiber (STREAMS Administrative Driver)
SYNTAX
#include <sys/types.h>
#include <sys/conf.h>
#include <sys/sad.h>
#include <sys/stropts.h>
int ioctl (fildes, command, arg);
int fildes, command;
BESCHREIBUNG
Der STREAMS-Verwaltungstreiber stellt eine Schnittstelle für Anwendun-
gen zur Verfügung, über die diese Verwaltungs-Operationen auf
STREAMS-Modulen und -Treibern ausführen können. Die Schnittstelle wird
über ioctl(2)-Kommandos realisiert. Privilegierte Operationen können
auf den sad-Treiber über /dev/sad/admin zugreifen. Unprivilegierte
Operationen können auf den sad-Treiber über /dev/sad/user zugreifen.
fildes ist eine offene Dateikennzahl, die auf den sad-Treiber ver-
weist. command legt die Steuerfunktion fest, die ausgeführt werden
soll (siehe unten). arg repräsentiert zusätzliche Informationen, die
vom jeweiligen Kommando benötigt werden. Der Typ von arg hängt vom
jeweiligen Kommando ab, ist aber generell eine ganze Zahl oder ein
Zeiger auf eine kommando-spezifische Datenstruktur.
KOMMANDO-FUNKTIONEN
Die autopush-Eigenschaft [siehe autopush(1M)] erlaubt es, eine Liste
von Modulen zu konfigurieren, die automatisch in einen Stream einge-
klinkt werden, wenn ein Treiber zum ersten Mal geöffnet wird. autopush
wird von den nächsten Kommandos gesteuert.
SADSAP Erlaubt dem Systemverwalter, die autopush-Informationen für
das gegebene Gerät zu konfigurieren. arg zeigt auf eine
strapush-Struktur, die folgende Komponenten enthält:
uint sapcmd;
long sapmajor;
long sapminor;
long saplastminor;
long sapnpush;
uint saplist[MAXAPUSH] [FMNAMESZ + 1];
Die sapcmd-Komponente gibt den Typ der durchzuführenden
Konfiguration an. Sie kann einen der folgenden Werte anneh-
men:
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
sad_strm(7) sad_strm(7)
SAPONE Ein Minorgerät eines Treibers konfigurieren.
SAPRANGE Einen Bereich von Minorgeräten eines Treibers kon-
figurieren.
SAPALL Alle Minorgeräte eines Treibers konfigurieren.
SAPCLEAR Konfiguration für einen Treiber zurücknehmen.
Die sapmajor-Komponente ist die Majornummer des zu konfigu-
rierenden Geräts. Die sapminor-Komponente ist die Minornum-
mer des zu konfigurierenden Geräts. Die saplastminor-
Komponente wird nur dann verwendet, wenn das SAPRANGE-
Kommando angegeben wird. Mit ihr wird ein Bereich von zu
konfigurierenden Minorgeräten zwischen sapminor und
saplastminor (einschließlich) angegeben. Diese Komponenten
haben für das SAPALL-Kommando keine Bedeutung. Die
sapnpush-Komponente gibt die Anzahl der Module an, die beim
Öffnen des Geräts automatisch eingeklinkt werden sollen. Sie
muß kleiner oder gleich dem Wert MAXAPUSH sein, der in sad.h
definiert ist. Sie muß auch kleiner oder gleich dem Wert
NSTRPUSH sein, der maximalen Zahl von Modulen, die in einen
Stream eingeklinkt werden können. Dieser Wert ist in der
Hauptdatei des Systemkerns definiert. Die Komponente
saplist ist ein Vektor von Modulnamen, die in der Reihen-
folge eingeklinkt werden sollen, in der sie in der Liste
erscheinen.
Wenn ein Benutzer das SAPCLEAR-Kommando verwendet, dann
besetzt er nur sapmajor und sapminor. Dies mach die Konfi-
guration für jedes andere Kommando rückgängig. Wurde ein
vorhergehender Eintrag durch SAPALL konfiguriert, dann
sollte sapminor gleich 0 gesetzt sein. Wurde ein vorherge-
hender Eintrag durch SAPRANGE konfiguriert, dann sollte
sapminor gleich der kleinsten Minornummer im konfigurierten
Bereich gesetzt werden.
Im Fehlerfall ist errno folgendermaßen besetzt:
EFAULT arg zeigt auf einen Punkt außerhalb des reservier-
ten Adreßraums.
EINVAL Die Majornummer, die Anzahl der Module oder die
Liste der Modulnamen ist ungültig.
ENOSTR Die Majornummer gehört zu keinem STREAMS-Treiber.
EEXIST Das Gerät mit der angegebenen Major- und Minornum-
mer ist bereits konfiguriert.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
sad_strm(7) sad_strm(7)
ERANGE Das Kommando ist SAPRANGE und saplastminor ist
nicht größer als sapminor; oder das Kommando ist
SAPCLEAR und sapminor ist nicht gleich der
ersten Minornummer im Bereich.
ENODEV Das Kommando ist SAPCLEAR und das Gerät ist nicht
für autopush konfiguriert.
ENOSR Eine interne autopush-Datenstruktur kann nicht
reserviert werden.
SADGAP Erlaubt es einem Benutzer, den sad-Treiber die Informationen
zur autopush-Konfiguration für ein gegebenes Gerät ermitteln
zu lassen. arg zeigt auf eine strapush-Struktur, wie sie
beim vorigen Kommando beschrieben wurde.
Der Benutzer sollte die sapmajor- und sapminor-Komponenten
der strapush-Struktur auf die Major- und Minornummer des
abzufragenden Gerätes setzen. Nach der Rückkehr ist die
strapush-Struktur mit den gesamten Informationen gefüllt,
die zur Konfiguration des Geräts verwendet werden. Nichtbe-
nutzte Einträge in der Modul-Liste sind mit Nullen gefüllt.
Im Fehlerfall nimmt errno einen der folgenden Werte an:
EFAULT arg zeigt auf einen Punkt außerhalb des reservier-
ten Adreßraums.
EINVAL Die Majornummer ist ungültig.
ENOSTR Die Majornummer gehört zu keinem STREAMS-Treiber.
ENODEV Das Gerät ist nicht für autopush konfiguriert.
SADVML Erlaubt es jedem Benutzer, eine Modul-Liste zu prüfen (d. h.
zu prüfen, ob diese Module im System installiert sind). arg
ist ein Zeiger auf eine strlist-Struktur, die folgende Kom-
ponenten besitzt:
int slnmods;
struct strmlist *slmodlist;
Die strmlist-Struktur besitzt folgende Komponente:
char lname[FMNAMESZ+1];
slnmods gibt die Anzahl der Einträge an, die der Benutzer
im Vektor reserviert hat, und slmodlist zeigt auf den Vek-
tor von Modulnamen. Das Ergebnis ist 0, wenn die Liste gül-
tig ist. Wenn die Liste einen ungültigen Modulnamen enthält,
dann ist das Ergebnis 1, und im Fehlerfall ist das Ergebnis
-1. Im Fehlerfall nimmt errno einen der folgenden Werte an:
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
sad_strm(7) sad_strm(7)
EFAULT arg zeigt auf einen Punkt außerhalb des reservier-
ten Adreßraums.
EINVAL Die slnmods-Komponente der strlist-Struktur ist
kleiner oder gleich 0.
DIAGNOSE
Sofern oben nicht anders angegeben, ist das Ergebnis von ioctl bei
Erfolg der Wert 0 und im Fehlerfall der Wert -1, wobei errno wie ange-
geben gesetzt ist.
SIEHE AUCH
introprm2(2), ioctl(2), open(2).
Leitfaden für Programmierer: STREAMS
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98