e_sleep_thread Kernel
Finalidad
Fuerza a la hebra del kernel que llama a esperar la aparición de un suceso compartido.
Sintaxis
#include <sys/sleep.h>
Parámetros
| Elemento | Descripción |
|---|---|
| event_word | Especifica la palabra de suceso compartido. El kernel utiliza el parámetro event_word como ancla para la lista de hebras que esperan en este suceso compartido. |
| lock_word | Especifica un bloqueo simple o complejo para desbloquear. |
| Banderas | Especifica opciones de manejo de bloqueo y señal. |
Descripción
El servicio de kernel de {\f2} obliga a la hebra de llamada a esperar hasta que se produzca un suceso compartido. El kernel coloca la hebra de llamada en la lista de sucesos anclada por el parámetro event_word . Esta lista la utilizan los servicios de kernel de e_wakeup, e_wakeup_oney e_wakeup_w_result para obtener algunas o todas las hebras en espera de que se produzca el suceso.
Se puede especificar un bloqueo; se desbloqueará cuando se especifique el servicio de kernel, justo antes de los bloques de hebras. Este bloqueo puede ser un bloqueo simple o complejo, tal como lo especifica el parámetro Banderas . Cuando el servicio de kernel sale, el bloqueo se vuelve a adquirir.
Distintivos
El parámetro Banderas especifica opciones para el servicio de kernel. Se pueden combinar varios distintivos con el operador o operador de bit a bit. Se describen a continuación.
Los cuatro distintivos siguientes especifican el tipo de bloqueo. Si el parámetro lock_word no es NULL, debe utilizarse exactamente uno de estos distintivos.
| Distintivo | Descripción |
|---|---|
| LOCK_HANDLER | lock_word especifica un bloqueo simple que protege una sección crítica de interrupción de hebra o interrupción de interrupción. |
| LOCK_SIMPLE | lock_word especifica un bloqueo sencillo que protege una sección crítica de hebra de hebra. |
| LOCK_READ | lock_word especifica un bloqueo complejo en modalidad de lectura compartida. |
| LOCK_WRITE | lock_word especifica un bloqueo complejo en modalidad de escritura exclusiva. |
El distintivo siguiente especifica el manejo de la señal. De forma predeterminada, mientras el hilo duerme, las señales se mantienen pendientes hasta que se despierta.
| Elemento | Descripción |
|---|---|
| INTERRUMPIBLE | Las señales deben ser controladas mientras el hilo del núcleo está durmiendo. Si es necesario entregar una señal, se despierta el hilo. |
Valores de retorno
El servicio de kernel de {\f2} devuelve un valor que indica cómo se ha despertado la hebra del kernel. Se definen los valores siguientes:
| Elemento | Descripción |
|---|---|
| THREAD_DESPERED | Denota un wakeup normal; el suceso se ha producido. |
| THREAD_INTERRUPTED | Denota una interrupción por una señal. Este valor se puede devolver aunque el distintivo INTERRUMPIBLE no esté establecido, ya que también puede ser generado por los servicios de kernel de e_clear_wait o e_wakeup_w_result . |
| THREAD_TIMED_OUT | Indica una caducidad de tiempo de espera. {\f2} no tiene tiempo de espera. Sin embargo, los servicios de kernel de e_clear_wait o e_wakeup_w_result pueden generar este valor de retorno. |
| THREAD_OTHER | Delinea los códigos de sistema predefinidos de los que deben definirse a nivel de subsistema. El subsistema debe definir sus propios valores superiores o iguales a este valor. |
Entorno de ejecución
El servicio de kernel de {\f2} sólo se puede llamar desde el entorno de proceso .