e_sleep_thread 内核服务
用途
强制进行调用的内核线程等待共享事件发生。
语法
#include <sys/sleep.h>
参数
| 项 | 描述 |
|---|---|
| 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_wait 或 e_wakeup_w_result 内核服务也可能生成此标志。 |
| THREAD_TIMED_OUT | 表示超时到期。 埃斯莱普线程 没有超时值。 但是, e_clear_wait 或 e_wakeup_w_result 内核服务可能会生成此返回值。 |
| THREAD_OTHER | 根据需要在子系统级别定义的系统代码来描述预定义的系统代码。 子系统应定义它们自己的大于或等于此值的值。 |
执行环境
埃斯莱普线程 内核服务只能从 流程 环境中进行调用。