Kernel-Service 'selnotify'

Zweck

Aktiviert Prozesse, die in einer Umfrage -oder Auswählen -Subroutine oder im fp_poll -Kernel-Service warten.

Syntax

#include <sys/types.h>
#include <sys/errno.h>
void selnotify ( id,  subid,  rtnevents)
int id;
int subid;
ushort rtnevents;

Parameter

Element Beschreibung
id Gibt einen primären Ressourcenidentifikationswert an. Dieser Wert wird zusammen mit der Unterkennung (angegeben durch den Parameter Sub-ID ) verwendet, um den Kernel über das Auftreten der angegebenen Ereignisse zu benachrichtigen. Wenn die Ressource, auf der das Ereignis aufgetreten ist, ein Einheitentreiber ist, muss dieser Parameter die Haupt-/Nebeneinheitennummer (d. h. eine Dev_t -Struktur, die in eine Intumgesetzt wurde) sein. Der Kernel hat reservierte Werte für den Parameter ID , die nicht mit möglichen Haupt-oder Nebennummern von Einheiten für Sockets, Nachrichtenwarteschlangen und benannte Pipes in Konflikt stehen.
Sub-ID Hilft bei der Identifizierung der Ressource, in der das Ereignis für den Kernel aufgetreten ist Bei einem Multiplex-Einheitentreiber ist dies die Nummer des Kanals, auf dem die angeforderten Ereignisse aufgetreten sind. Wenn der Einheitentreiber kein Multiplexing ist, muss der Parameter Sub-ID auf 0 gesetzt werden.
Rtnevents Besteht aus einer Gruppe von Bits, die die angeforderten Ereignisse angeben, die auf der angegebenen Einheit bzw. dem angegebenen Kanal aufgetreten sind Diese Flags haben dieselbe Definition wie die Ereignisflags, die vom Parameter Ereignisse im nicht erfüllten Aufruf der Auswahlroutine des Objekts bereitgestellt wurden.

Beschreibung

Der Selnotify -Kernel-Service sollte von Einheitentreibern verwendet werden, die Auswahl-oder Polling-Operationen unterstützen. Sie wird auch vom Kernel verwendet, um Auswahl-oder Abfrageanforderungen an Sockets, benannte Pipes und Nachrichtenwarteschlangen zu unterstützen.

Der Selnotify -Kernel-Service aktiviert Prozesse, die auf eine Auswählen -oder Umfrage -Subroutine warten. Die Prozesse, die aufgeweckt werden sollen, sind diejenigen, die das angegebene Gerät und eines oder mehrere der Ereignisse angeben, die auf dem angegebenen Gerät aufgetreten sind. Die Unterprogramme select und poll ermöglichen es einem Prozess, Informationen über ein oder mehrere Ereignisse auf einem bestimmten Gerät anzufordern. Wenn noch keines der angeforderten Ereignisse eingetreten ist, wird der Prozess inaktiviert und später wieder aktiviert, wenn die Ereignisse tatsächlich eintreten.

Der Service Selnotify sollte immer aufgerufen werden, wenn ein vorheriger Aufruf an Eingangspunkt Datendefinitionsauswahl des Einheitentreibers zurückgegeben wird und die beiden folgenden Bedingungen zutreffen:

  • Der Status aller angeforderten Ereignisse ist 'false'.
  • Asynchrone Benachrichtigung über die Ereignisse wird angefordert.

Der Service Selnotify kann für andere als diese Bedingungen aufgerufen werden, führt jedoch keine Operation aus.

Ereignisfolge für asynchrone Benachrichtigung

Der Einheitentreiber muss unter den folgenden Bedingungen Informationen zu den angeforderten Ereignissen in der Datendefinitionsauswahl -Routine des Treibers speichern:

  • Keiner der angeforderten Ereignisse ist wahr (zum Zeitpunkt des Aufrufs).
  • Das Flag POLLSYNC ist im Parameter Ereignisse nicht gesetzt.

Wenn das Flag POLLSYNC nicht gesetzt ist, gibt es an, dass eine asynchrone Benachrichtigung gewünscht wird. In diesem Fall sollte der Selnotify -Service aufgerufen werden, wenn eines oder mehrere der angeforderten Ereignisse später für diese Einheit und diesen Kanal wahr werden.

Wenn der Einheitentreiber feststellt, dass er eine Auswählen -Anforderung erfüllen kann (möglicherweise aufgrund neuer Eingabedaten) und eine nicht erfüllte Anforderung für dieses Ereignis ansteht, wird der Service Selnotify mit den folgenden Elementen aufgerufen:

  • Vom Parameter ID angegebene Haupt-und Nebengerätenummer der Einheit
  • Über den Parameter Sub-ID angegebene -Kanalnummer
  • Durch den Parameter Rtnevents angegebene aufgetretene Ereignisse

Diese Parameter beschreiben die Einheiteninstanz und angeforderte Ereignisse, die auf dieser Einheit aufgetreten sind. Der benachrichtigen Einheitentreiber setzt dann seine Flags für angeforderte Ereignisse für die Ereignisse zurück, die für diese Einheit und diesen Kanal aufgetreten sind. Die Zurücksetzungsmarkierungen geben somit an, dass diese Ereignisse nicht mehr angefordert werden.

Wenn auf den durch den Aufruf des Selnotify -Service angegebenen Parameter Rtnevents nicht mehr gewartet wird, werden keine Prozesse aktiviert.

Ausführungsumgebung

Der Selnotify -Kernel-Service kann über die Prozess -oder Unterbrechung -Umgebung aufgerufen werden.

Rückgabewerte

Der Selnotify -Service hat keine Rückgabewerte.

Implementierungsspezifikationen

Der Selnotify -Kernel-Service ist Teil von Base Operating System (BOS) Runtime.