e_sleep_thread 内核服务

用途

强制进行调用的内核线程等待共享事件发生。

语法

#include <sys/sleep.h>
int e_sleep_thread ( event_word,  lock_word,  flags)
tid_t *event_word;
void *lock_word;
int flags;

参数

描述
event_word 指定共享事件字。 内核使用 event_word 参数作为正在等待此共享事件的线程的列表的锚点。
lock_word 指定要解锁的简单或复杂锁定。
标志 指定锁定和信号处理选项。

描述

埃斯莱普线程 内核服务强制调用线程等待到发生共享事件为止。 内核将调用线程放置在由 event_word 参数锚定的事件列表上。 警醒警醒一e_wakeup_w_result 内核服务使用此列表来唤醒正在等待事件发生的某些或所有线程。

可以指定锁定; 它将在进入内核服务时被解锁,就在线程阻塞之前。 此锁定可以是简单锁定,也可以是由 标志 参数指定的复杂锁定。 当内核服务退出时,将重新获取锁定。

标志

标志 参数指定用于内核服务的选项。 多个标志可以与按位 OR 运算符组合使用。 下面将对这些内容进行描述。

以下四个标志指定了锁定类型。 如果 lock_word 参数不是 空值,那么必须正好使用这些标志中的一个。

标志 描述
锁定处理程序 lock_word 指定用于保护线程中断或中断中断临界区的简单锁定。
锁定简单 lock_word 指定用于保护线程线程关键部分的简单锁定。
LOCK_READ lock_word 指定共享读方式下的复杂锁定。
LOCK_WRITE lock_word 以互斥写方式指定复杂锁定。

以下标志指定了信号处理。 缺省情况下,当线程休眠时,信号将保持暂挂,直到它唤醒为止。

描述
可中断 必须在内核线程处于休眠状态时检查信号。 如果需要传递信号,那么该线程将被唤醒。

返回值

埃斯莱普线程 内核服务会返回一个值,该值指示如何唤醒内核线程。 定义了以下值:

描述
THREAD_AWAKED 表示正常唤醒; 发生了该事件。
THREAD_INTERRUPTED 表示由信号引起的中断。 即使未设置 可中断 标志,也会返回此值,因为 e_clear_waite_wakeup_w_result 内核服务也可能生成此标志。
THREAD_TIMED_OUT 表示超时到期。 埃斯莱普线程 没有超时值。 但是, e_clear_waite_wakeup_w_result 内核服务可能会生成此返回值。
THREAD_OTHER 根据需要在子系统级别定义的系统代码来描述预定义的系统代码。 子系统应定义它们自己的大于或等于此值的值。

执行环境

埃斯莱普线程 内核服务只能从 流程 环境中进行调用。