通过事件操作,可以针对内存访问事件实现进程同步。如果进程无法使用 rsm_intr_signal_wait() 函数,则可以多路复用事件等待,方法是通过 rsm_memseg_get_pollfd() 获取轮询描述符并使用 poll 系统调用。
使用 rsm_intr_signal_post() 和 rsm_intr_signal_wait() 操作时需要处理对内核的 ioctl 调用。
void 指针 *memseg 可以将类型转换为导入段句柄或导出段句柄。如果 *memseg 引用导入句柄,则此函数会向导出进程发送信号。如果 *memseg 引用导出句柄,则此函数会向该段的所有导入者发送信号。如果已针对目标段暂挂此事件,则将 flags 参数设置为 RSM_SIGPOST_NO_ACCUMULATE 可废弃此事件。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
无法访问远程节点
void 指针 *memseg 可以将类型转换为导入段句柄或导出段句柄。进程的阻塞时间最多可达到 timeout 毫秒,或在事件发生之前一直阻塞。如果值为 -1,则进程在事件发生之前或中断之前会一直阻塞。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
计时器已到期
等待已中断
此函数可用于通过指定段的描述符以及 rsm_intr_signal_post() 所生成的单个固定事件初始化指定的 pollfd 结构。将 pollfd 结构用于 poll 系统调用可等待 rsm_intr_signal_post 所通知的事件。如果当前未发布内存段,则 poll 系统调用无法返回有效的 pollfd。每次成功调用都会递增指定段的 pollfd 引用计数。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效
此调用可递减指定段的 pollfd 引用计数。如果引用计数为非零值,则取消发布、销毁或取消映射段的操作会失败。
返回值:如果成功,则返回 0。否则返回错误值。
段句柄无效