Service de noyau selnotify

Objectif

Rend les processus en attente dans une sous-routine Sondage ou Sélectionner ou dans le service de noyau Sondages fp_sondages .

Syntaxe

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

Paramètres

Article Descriptif
id Indique une valeur d'identification de ressource principale. This value along with the subidentifier (specified by the Subid parameter) is used by the kernel to notify the appropriate processes of the occurrence of the indicated events. Si la ressource sur laquelle l'événement s'est produit est un pilote de périphérique, ce paramètre doit être le numéro majeur / mineur de l'unité (c'est-à-dire une structure Dev_t qui a été transté sur un Int). Le noyau contient des valeurs réservées pour le paramètre Id qui ne sont pas en conflit avec les numéros principaux ou secondaires d'unités possibles pour les sockets, les files d'attente de messages et les tubes nommés.
Subid Permet d'identifier la ressource sur laquelle l'événement s'est produit pour le noyau. Pour un pilote de périphérique multiplexé, il s'agit du numéro du canal sur lequel s'est produit les événements demandés. Si le pilote de périphérique est non multiplexé, le paramètre Subid doit être défini sur 0.
Rtnevents Comprend un ensemble de bits indiquant les événements demandés qui se sont produits sur l'unité ou le canal spécifié. Ces indicateurs ont la même définition que les indicateurs d'événement fournis par le paramètre événements sur l'appel non satisfait à la routine de sélection de l'objet.

Descriptif

Le service de noyau Selnotifier doit être utilisé par les pilotes de périphérique qui prennent en charge les opérations de sélection ou d'interrogation. Il est également utilisé par le noyau pour prendre en charge les requêtes de sélection ou d'interrogation vers les sockets, les tubes nommés et les files d'attente de messages.

Le service de noyau Selnotifier réveille les processus en attente d'une sous-routine Sélectionner ou Sondage . Par défaut, les processus à réveiller sont ceux qui spécifiaient l'unité donnée et un ou plusieurs événements qui se sont produits sur l'unité indiquée. Lorsque plusieurs processus spécifient l'indicateur POLLEXCL , un seul processus de l'ensemble de processus qui a demandé une notification exclusive est notifié des événements. Les sous-routines select et poll permettent à un processus de demander des informations sur un ou plusieurs événements sur un périphérique particulier. Si aucun des événements demandés n'est encore arrivé, le processus est mis en sommeil et réveillé plus tard lorsque les événements se produisent réellement.

Le service Selnotifier doit être appelé chaque fois qu'un appel précédent du pilote de périphérique Point d'entrée Ddselect est renvoyé et que les deux conditions suivantes s'appliquent:

  • Le statut de tous les événements demandés est faux.
  • Une notification asynchrone des événements est demandée.

Le service Selnotifier peut être appelé pour d'autres conditions que ces conditions, mais il n'effectue aucune opération.

Séquence d'événements pour la notification asynchrone

Le pilote de périphérique doit stocker des informations sur les événements demandés lors de la routine Ddselect du pilote dans les conditions suivantes:

  • Aucun des événements demandés n'est vrai (au moment de l'appel).
  • L'indicateur POLLSYNCHRONISÉ n'est pas défini dans le paramètre événements .

L'indicateur POLLSYNCHRONISÉ , lorsqu'il n'est pas défini, indique que la notification asynchrone est souhaitée. Dans ce cas, le service Selnotifier doit être appelé lorsqu'un ou plusieurs des événements demandés deviennent plus tard vrais pour ce périphérique et ce canal.

Lorsque le pilote de périphérique détecte qu'il peut satisfaire une demande Sélectionner (peut-être en raison de nouvelles données d'entrée) et qu'une demande non satisfaite pour cet événement est toujours en attente, le service Selnotifier est appelé avec les éléments suivants:

  • Numéro d'unité et nombre mineur spécifié par le paramètre Id
  • Numéro de canal spécifié par le paramètre Subid
  • Les événements ont été spécifiés par le paramètre Rtnevents

Ces paramètres décrivent l'instance d'unité et les événements demandés qui se sont produits sur cette unité. Le pilote de l'unité de notification réinitiquant ensuite les indicateurs d'événements demandés pour les événements qui se sont produits pour ce périphérique et ce canal. Les indicateurs de réinitialisation indiquent donc que ces événements ne sont plus demandés.

Si le paramètre Rtnevents indiqué par l'appel au service Selnotifier n'est plus attendu, aucun processus n'est réveillé.

Environnement d'exécution

Le service de noyau Selnotifier peut être appelé à partir de l'environnement Processus ou Interruption .

Valeurs renvoyées

Le service Selnotifier n'a pas de valeur de retour.

Caractéristiques de mise en oeuvre

Le service de noyau Selnotifier fait partie de l'environnement d'exécution du système d'exploitation de base (BOS).