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>
void e_wakeup ( event_word)
tid_t *event_word;
void e_wakeup_one ( event_word)
tid_t *event_word;
void e_wakeup_w_result ( event_word,  result)
tid_t *event_word;
int result;

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:
THREAD_DESPERED
Indica un wakeup normal. Este es el valor generado automáticamente por los servicios de kernel de e_wakeup o e_wakeup_one .
THREAD_INTERRUPTED
Indica un sueño interrumpido. Este valor se genera normalmente mediante una entrega de señal cuando se establece el distintivo INTERRUMPIBLE .
THREAD_TIMED_OUT
Indica una caducidad de tiempo de espera.
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.

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.