e_sleep 内核服务

用途

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

语法

#include <sys/types.h> #include <sys/errno.h> #include <sys/sleep.h> int 睡眠 (整数) event_word, 标志) tid_t *event_word; 英特 标志;

参数

描述
event_word 指定共享事件字。 内核使用 event_word 参数来锚定在此事件上休眠的进程的列表。 event_word 参数必须先初始化为 EVENT_NULL ,然后才能首次使用。
标志 指定用于控制信号出现时的操作的标志。 这些标志可以在 /usr/include/sys/sleep.h 文件中找到。 标志 参数用于控制信号如何影响等待事件的情况。 以下标志对 睡眠 服务可用:
EVENT_SIGRET
通过未屏蔽的信号指示等待事件的终止。 返回值将设置为 EVENT_SIG
EVENT_SIGWAKE
通过未屏蔽的信号指示事件的终止。 此标志会导致将控制权从最后一个 塞廷普 服务转移到返回,并将返回值设置为 EINTR
EVENT_SHORT
禁止因信号而终止等待。 此标志应仅用于短的,有保证的唤醒休眠。

描述

睡眠 内核服务用来等待指定的共享事件发生。 内核将当前内核线程放置在由 event_word 参数锚定的列表上。 此列表由 警醒 服务用于唤醒所有正在等待事件发生的线程。

事件列表的锚点 ( event_word 参数) 必须先初始化为 EVENT_NULL ,然后才能首次使用。 在使用此锚点时,内核扩展不得改变此锚点。

警醒 服务不会唤醒当前未在 睡眠 功能中处于休眠状态的线程。 即,如果在进程调用事件的 睡眠 服务之前对事件发出 警醒 操作,那么线程仍将休眠,并等待该事件的下一个 警醒 服务。 这意味着使用此功能的例程必须确保在调用事件的 睡眠 操作之前,不存在由于调用 警醒 服务而可能遗漏事件的计时窗口。

注: 仅当锁定事件或锁定字时,才可以在禁用中断的情况下调用 睡眠 服务。

执行环境

仅可从 流程环境 调用 睡眠 内核服务。

返回值

描述
EVENT_SUCC 指示操作成功。
EVENT_SIG 指示已设置 EVENT_SIGRET 标志,并且等待已由信号终止。