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_FD

PS_ADD_MSGQID

将有效的打开文件描述符或 System V 消息队列添加到 pollset 文件描述符和消息队列集。

PS_MOD_FD

PS_MOD_MSGQID

如果文件描述符或消息队列已存在于 pollset中,那么会将 poll_ctl 结构或 pollfd 结构中定义的 events 字段中的位添加到内核监视的事件中,并使用新值更新用户指定的数据。 如果 pollset中不存在文件描述符或消息队列,那么会将文件描述符或消息队列添加到 pollset

PS_DELETE_FD

PS_DELETE_MSGQID

pollset中除去文件描述符或消息队列。

PS_REPLACE_FD

PS_REPLACE_MSGQID

如果 pollset中已存在文件描述符或消息队列,请将 pollset 文件描述符或消息队列集的 events 字段和用户指定数据中的值替换为 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 指示正在由内核跟踪的事件。 "事件" 字段还可以包含下列其中一个标志:
波林
文件描述符的输入,该文件或正在将数据发送至另一设备的设备的消息队列中存在该文件描述符。
投票站
这些文件或消息队列可以接受来自设备的输出。
波利普里
在将数据发送到另一个设备的设备的文件或消息队列中存在异常情况 (例如频带外数据)。
波列
必须将来自设备的通知以边缘触发的方式传递到已创建 pollset 结构的设备,即,只要跟踪事件,就必须传递通知。
POLLEXCL

来自设备的通知必须以互斥方式传递到 pollset ,即,通知仅传递到监视共享文件的单个 pollset 。 有关互斥通知的更多信息,请参阅 ../p_bostechref/poll.htm

以下宏可用于填充 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 结构。