pollset.h 文件

用途

定义 pollset 子例程所使用的结构和标志。

描述

/usr/include/sys/pollset.h 文件定义了 pollset 子例程所使用的多个结构。 pollset_poll 子例程或 pollset_poll_ext 子例程检查由 poll_ctlpoll_ctl_ext 结构数组指定的文件描述符的 I/O 状态。 下表列出了 /usr/include/sys/pollset.h 文件中定义的命令。 这些命令可以与 pollset_poll 子例程或 pollset_poll_ext 子例程配合使用。

表 1. 可以与 pollset.h 文件中定义的 pollset_ctl 或 pollset_ctl_ext 子例程配合使用的命令。
命令 描述
PS_ADD 将有效的打开文件描述符添加到 pollset 文件描述符集。
PS_MOD 如果文件描述符已存在于 pollset 文件描述符中,那么会将 poll_ctl 结构或 pollfd 结构中定义的 events 字段中的位添加到内核监视的事件中,并使用新值更新用户指定的数据。 如果 pollset 文件描述符中不存在该文件描述符,那么会将该文件描述符添加到 pollset 文件描述符中。
删除 (PS_DELETE) pollset 文件描述符集合中除去文件描述符。
PS_REPLACE 如果文件描述符已存在于 pollset 文件描述符集中,请将 events 字段中的值以及 pollset 文件描述符集中的用户指定数据替换为 poll_ctl 结构中指定的新值。

poll_ctl 结构或 poll_ctl_ext 结构用于对 pollset 结构执行操作, pollset 结构作为输入传递到 pollset_ctl 子例程或 pollset_ctl_ext 子例程。 poll_ctl 结构或 poll_ctl_ext 结构的两个版本与 pollset_ctl 子例程或 pollset_ctl_ext 子例程兼容。

下表列出了 pollset.h 文件中定义的 poll_ctl 结构或 poll_ctl_ext 结构的字段:
表 2. poll_ctl 结构的字段或 poll_ctl_ext 结构的字段
描述
version version 字段具有以下值:
V0
不支持扩展字段 (例如 data 字段) 的 version 字段的原始格式。
版本 1
支持用户指定数据的 version 字段的扩展格式。
command 指定用于从结构读取数据并确定如何修改 pollset 文件描述符的 pollset 命令。
events 指示正在由内核跟踪的事件。 "事件" 字段还可以包含下列其中一个标志:
POLLIN
文件描述符的输入,该文件或正在将数据发送至另一设备的设备的消息队列中存在该文件描述符。
POLLOUT
这些文件或消息队列可以接受来自设备的输出。
民意调查
在将数据发送到另一个设备的设备的文件或消息队列中存在异常情况 (例如频带外数据)。
波莱特
必须将来自设备的通知以边缘触发方式传递到已创建 pollset 结构的设备,即,只要正在跟踪事件,就必须传递通知。
以下宏可用于填充 poll_ctl 结构或 poll_ctl_ext 结构,或者可以直接填充这些结构。
表 3. 用于初始化 poll_ctl 或 poll_ctl_ext 结构的宏
描述
POLL_CTL_INIT(struct poll_ctl *, command, events, fd) 初始化 poll_ctl 结构。
POLL_CTL_EXT_INIT_V1(struct poll_ctl_ext *, command, events, fd, data) 使用支持用户指定数据的扩展格式来初始化 poll_ctl_ext 结构。