selnotify Kernel Service
Finalidad
Despierta procesos en espera en una subrutina Encuesta o seleccionar o en el servicio de kernel de fp_poll .
Sintaxis
Parámetros
| Elemento | Descripción |
|---|---|
| id | Indica un valor de identificación de recurso primario. El kernel utiliza este valor junto con el subidentificador (especificado por el parámetro Subid ) para notificar los procesos adecuados de la aparición de los sucesos indicados. Si el recurso en el que se ha producido el suceso es un controlador de dispositivo, este parámetro debe ser el número mayor/menor de dispositivo (es decir, una estructura dev_t que se ha convertido en int). El kernel tiene valores reservados para el parámetro id que no entran en conflicto con un posible número mayor o menor de dispositivos para sockets, colas de mensajes y conductos con nombre. |
| Subid | Ayuda a identificar el recurso en el que se ha producido el suceso para el kernel. Para un controlador de dispositivo multiplexado, es el número del canal en el que se han producido los sucesos solicitados. Si el controlador de dispositivo no es multiplexado, el parámetro Subid debe establecerse en 0. |
| rtneventil | Consta de un conjunto de bits que indica los sucesos solicitados que se han producido en el dispositivo o canal especificado. Estos distintivos tienen la misma definición que los distintivos de sucesos proporcionados por el parámetro Acontecimientos en la llamada no satisfecha a la rutina de selección del objeto. |
Descripción
El servicio de kernel de selnotify debe ser utilizado por los controladores de dispositivo que dan soporte a operaciones de selección o sondeo. También lo utiliza el kernel para dar soporte a solicitudes de selección o sondeo a sockets, conductos con nombre y colas de mensajes.
El servicio de kernel de selnotify despierta procesos en espera de una subrutina seleccionar o Encuesta . Los procesos a despertar son los que especifican el dispositivo dado y uno o más de los eventos que han ocurrido en el dispositivo especificado. Las subrutinas select y poll permiten a un proceso solicitar información sobre uno o más eventos en un dispositivo concreto. Si todavía no ha ocurrido ninguno de los eventos solicitados, el proceso se pone a dormir y se vuelve a despertar más tarde cuando los eventos realmente suceden.
Se debe llamar al servicio selnotify siempre que se devuelva una llamada anterior a ddselect punto de entrada del controlador de dispositivo y se apliquen las dos condiciones siguientes:
- El estado de todos los sucesos solicitados es false.
- Se solicita la notificación asíncrona de los sucesos.
El servicio selnotify se puede llamar para que no sean estas condiciones, pero no realiza ninguna operación.
Secuencia de sucesos para notificación asíncrona
El controlador de dispositivo debe almacenar información sobre los sucesos solicitados mientras está en la rutina ddselect del controlador en las condiciones siguientes:
- Ninguno de los sucesos solicitados es verdadero (en el momento de la llamada).
- El distintivo POLLSYNC no está establecido en el parámetro Acontecimientos .
El distintivo POLLSYNC , cuando no está establecido, indica que se desea la notificación asíncrona. En este caso, se debe llamar al servicio selnotify cuando uno o más de los sucesos solicitados se convierten más tarde en true para dicho dispositivo y canal.
Cuando el controlador de dispositivo encuentra que puede satisfacer una solicitud de seleccionar , (tal vez debido a nuevos datos de entrada) y una solicitud no satisfecha para ese suceso todavía está pendiente, se llama al servicio selnotify con los siguientes elementos:
- Número mayor y menor de dispositivo especificado por el parámetro id
- Número de canal de especificado por el parámetro Subid
- Se han producido sucesos especificados por el parámetro rtneventil
Estos parámetros describen la instancia de dispositivo y los sucesos solicitados que se han producido en dicho dispositivo. A continuación, el controlador de dispositivo de notificación restablece sus distintivos de sucesos solicitados para los sucesos que se han producido para dicho dispositivo y canal. De este modo, los distintivos de restablecimiento indican que esos sucesos ya no se solicitan.
Si el parámetro rtneventil indicado por la llamada al servicio selnotify ya no se está esperando, no se despierta ningún proceso.
Entorno de ejecución
El servicio de kernel de selnotify se puede llamar desde el entorno proceso o interrupción .
Valores de retorno
El servicio selnotify no tiene valores de retorno.
Detalles de la implementación
El servicio de kernel de selnotify forma parte del tiempo de ejecución del sistema operativo base (BOS).