e_wakeup, e_wakeup_one o e_wakeup_w_result Kernel Service
Finalidad
Notifica a las hebras del kernel en espera de un suceso compartido de la aparición del suceso.
Sintaxis
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/sleep.h> tid_t *event_word;
tid_t *event_word;
Parámetros
| Elemento | Descripción |
|---|---|
| event_word | Especifica el designador de suceso compartido. El kernel utiliza el parámetro event_word como ancla para la lista de hebras que esperan en este suceso compartido. |
| Resultado | Especifica el valor devuelto a la hebra de kernel despertada. Pueden utilizarse los valores siguientes:
|
Descripción
Los servicios de kernel de e_wakeup y e_wakeup_w_result despiertan todas las hebras de kernel que duermen en la lista de sucesos anclada por el parámetro event_word . El servicio de kernel de e_wakeup_one sólo despierta la hebra más favorecida que duerme en la lista de sucesos anclada por el parámetro event_word .
Cuando se despiertan las hebras, vuelven de una llamada al servicio de kernel de e_block_thread o {\f2} . El valor de retorno depende del servicio de kernel llamado para despertar las hebras (el servicio de kernel de despertador):
- THREAD_DESPERED se devuelve si se llama al servicio de kernel de e_wakeup o e_wakeup_one
- El valor del parámetro resultado se devuelve si se llama al servicio de kernel de e_wakeup_w_result .
Si se entrega una señal a una hebra que está siendo despertada por uno de los servicios del kernel de atención, y si la hebra especifica el distintivo INTERRUMPIBLE , la entrega de la señal tiene prioridad. La hebra se despierta con un valor de retorno de THREAD_INTERRUPTED, independientemente del servicio denominado de kernel de activación.
Los servicios de kernel de e_wakeup y e_wakeup_w_result establecen el parámetro event_word en EVENT_NULL.
Los servicios de kernel de e_wakeup, e_wakeup_oney e_wakeup_w_result no tienen valores de retorno.
Entorno de ejecución
Los servicios de kernel e_wakeup, e_wakeup_oney e_wakeup_w_result se pueden llamar desde el entorno proceso o desde el entorno interrupción .
Cuando se llama por un manejador de interrupciones, el parámetro event_word debe estar ubicado en la memoria fija.