Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ poll(2) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

getmsg(2)

getrlimit(2)

putmsg(2)

read(2)

write(2)

pollbunch(3C)

poll(5)

stropts(5)

poll(2)                                                             poll(2)

NAME
     poll - STREAMS-Ein-/Ausgabe multiplexen

SYNTAX
     #include <stropts.h>
     #include <poll.h>

     int poll(struct pollfd *fds, nfdst nfds, int timeout);

BESCHREIBUNG
     poll() bietet dem Benutzer einen Mechanismus für das Multiplexen der
     Ein-/Ausgabe über einen Satz von Dateideskriptoren, die auf offene
     Dateien verweisen. poll() kennzeichnet die Dateien, auf denen der
     Benutzer Meldungen empfangen oder senden kann, oder auf denen
     bestimmte Ereignisse eingetreten sind.

     fds gibt die zu prüfenden Dateideskriptoren und die Ereignisse an, die
     für jeden Dateideskriptor von Interesse sind. Es handelt sich um einen
     Zeiger auf ein Feld mit jeweils einem Element für jeden offenen Datei-
     deskriptor von Interesse. Die Elemente des Feldes sind pollfd-Struktu-
     ren, die folgendes enthalten:

          int fd;            /* Dateideskriptor */
          short events;      /* angeforderte Ereignisse */
          short revents;     /* gemeldete Ereignisse */

     fd gibt einen offenen Dateideskriptor an, und events (Ereignisse) und
     revents (zurückgegebene Ereignisse) sind Bitmasken, die durch ODER-
     Verknüpfung beliebiger Kombinationen nachstehender Ereignisanzeiger
     aufgebaut werden:

     POLLIN        Daten, die nicht von hoher Priorität sind, können nicht-
                   blockierend gelesen werden. Für STREAMS wird diese
                   Option auch gesetzt, wenn die Meldung die Länge 0 hat.

     POLLRDNORM    Gewöhnliche Daten (Prioritätsbereich 0) können nicht-
                   blockierend gelesen werden. Für STREAMS wird diese
                   Option auch gesetzt, wenn die Meldung die Länge 0 hat.

     POLLRDBAND    Daten mit einer Prioritätsbereich ungleich 0 können
                   nichtblockierend gelesen werden. Für STREAMS wird diese
                   Option auch gesetzt, wenn die Meldung die Länge 0 hat.

     POLLPRI       Daten mit hoher Priorität können nichtblockierend emp-
                   fangen werden. Für STREAMS wird diese Option auch
                   gesetzt, wenn die Meldung die Länge 0 hat.

     POLLOUT       Normale Daten können nichtblockierend geschrieben wer-
                   den.

     POLLWRNORM    Wie POLLOUT.




Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

poll(2)                                                             poll(2)

     POLLWRBAND    Daten mit einer Prioritätsbereich ungleich 0 können
                   geschrieben werden. Dieses Ereignis untersucht nur
                   Bereiche, die mindestens einmal geschrieben wurden.

     POLLMSG       Eine MSIG- oder MPCSIG-Meldung, die ein ASIGPOLL-Sig-
                   nal enthält, hat den Anfang der Stream-Kopf-Warte-
                   schlange erreicht.

     POLLERR       Eine Fehlermeldung liegt am Stream oder Gerät an. Dieser
                   Schalter ist nur in der revents-Bitmaske gültig; er wird
                   nicht im events-Feld verwendet.

     POLLHUP       Ein Hangup ist im Stream aufgetreten. Dieses Ereignis
                   und POLLOUT schließen sich gegenseitig aus; auf einen
                   Stream kann niemals geschrieben werden, wenn ein Hangup
                   aufgetreten ist. Jedoch schließen sich dieses Ereignis
                   und POLLIN, POLLRDNORM, POLLRDBAND oder POLLPRI nicht
                   gegenseitig aus. Dieser Schalter ist nur in der
                   revents-Bitmaske gültig; er wird nicht in einem events-
                   Feld verwendet.

     POLLNVAL      Der angegebene fd-Wert gehört nicht zu einer offenen
                   Datei. Dieser Schalter ist nur im revents-Feld gültig;
                   er wird nicht im events-Feld verwendet.

     Liegt der Wert von fd unter 0, wird events ignoriert, und revents wird
     bei der Rückkehr von poll() in diesem Eintrag auf 0 gesetzt.

     In jeder pollfd-Struktur löscht poll() den Inhalt der Komponente
     revents, außer die Anwendung hat einen Bericht zu einer Bedingung
     durch Setzen eines der oben aufgeführten events-Bits angefordert. In
     diesem Fall setzt poll() das entsprechende Bit in revents, wenn die
     Bedingung zutrifft. Ferner setzt poll() das Flag POLLHUP, POLLERR oder
     POLLNVAL in revents auch dann, wenn die jeweilige Bedingung zutrifft,
     die Anwendung das entsprechende Bit in events jedoch nicht gesetzt
     hat.

     Wenn keines der definierten Ereignisse in einem der ausgewählten
     Dateideskriptoren aufgetreten ist, wartet poll() zumindest timeout
     Millisekunden auf das Auftreten eines Ereignisses bei einem der ausge-
     wählten Dateideskriptoren. Wenn der Wert von timeout 0 ist, kehrt
     poll() direkt zurück. Ist der Wert von timeout -1, bewirkt poll() eine
     Blockierung, bis ein abgefragtes Ereignis auftritt oder der Abruf
     unterbrochen wird.

     Abhängig von der jeweiligen Implementierung kann die Einteilung (Gra-
     nularität) von Zeitüberschreitungsintervallen Einschränkungen unter-
     liegen. Wenn für das angeforderte Zeitüberschreitungsintervall klein-
     ere Einteilungsschritte als von der Implementierung unterstützt erfor-
     derlich sind, wird das tatsächliche Zeitüberschreitungsintervall auf
     den nächsten unterstützten Wert gerundet.



Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

poll(2)                                                             poll(2)

     Das Flag ONONBLOCK hat keine Auswirkungen auf die Funktion poll().

     Die Funktion poll() unterstützt normale Dateien, Terminal- und
     Pseudo-Terminal-Gerätedateien, STREAMS-spezifische Dateien, FIFO-
     Dateien und Pipes. Das Verhalten von poll() bei Komponenten von fds,
     die sich auf andere Dateitypen beziehen, ist unbestimmt.

     Normale Dateien melden für Lesen oder Schreiben stets TRUE.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     poll() ist erfolglos, wenn einer oder mehrere der nachstehenden Punkte
     zutreffen:

     EAGAIN    Zuweisung der internen Datenstrukturen war erfolglos, die
               Anforderung kann jedoch wiederholt werden.

     EFAULT    Ein Argument zeigt auf einen Speicherplatz außerhalb des
               zugewiesenen Adreßraums.

     EINTR     Ein Signal wurde während des Systemaufrufs poll() abgefan-
               gen.

     EINVAL    Das Argument nfds ist größer als OPENMAX, oder eine der
               fd-Komponenten verweist auf einen STREAM oder Multiplexer,
               der (direkt oder indirekt) downstream vom Multiplexer ver-
               bunden ist.

ERGEBNIS
     Nach erfolgreicher Beendigung wird ein nicht negativer Wert zurückge-
     geben. Ein positiver Wert zeigt die Gesamtanzahl der jeweils ausge-
     wählten Dateideskriptoren an (d. h. Dateideskriptoren, für die das
     Feld revents ungleich Null ist). 0 zeigt an, daß die Zeit für den Auf-
     ruf abgelaufen ist und keine Dateideskriptoren gewählt wurden. Ist der
     Vorgang erfolglos, wird -1 zurückgegeben und errno zur Anzeige des
     Fehlers gesetzt.

SIEHE AUCH
     getmsg(2), getrlimit(2), putmsg(2), read(2), write(2), pollbunch(3C),
     poll(5), stropts(5).

     "Leitfaden für Programmierer: STREAMS".









Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

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