摘要
触发虚拟中断对象。
声明
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_trigger(zx_handle_t handle,
uint32_t options,
zx_time_t timestamp);
说明
zx_interrupt_trigger() 用于触发虚拟中断对象,使中断消息数据包到达绑定端口(如果已绑定到端口),或者在等待此中断时返回 zx_interrupt_wait()。
选项必须为零。
默认情况下,时间戳会被解读为 ZX_CLOCK_BOOT 的时间戳。不过,如果中断是使用 ZX_INTERRUPT_TIMESTAMP_MONO 选项创建的,那么此时间戳将被解读为 ZX_CLOCK_MONOTONIC 上的时间戳。
zx_interrupt_trigger() 仅在底层对象是使用 ZX_INTERRUPT_VIRTUAL 选项显式创建的虚拟中断时有效,不得用于强制触发物理中断。
虚拟中断还支持 Zircon 信号 ZX_VIRTUAL_INTERRUPT_UNTRIGGERED,该信号可与标准 Zircon 信号等待机制(not
zx_interrupt_wait())一起使用,以告知触发驱动程序中断消费者何时已处理并确认中断触发事件。如需详细了解如何使用 ZX_VIRTUAL_INTERRUPT_UNTRIGGERED 信号,请参阅(此处)Interrupts#virtual-interrupts-and-the-untriggered-signal。
权限
句柄必须是 ZX_OBJ_TYPE_INTERRUPT 类型,并且具有 ZX_RIGHT_SIGNAL。
返回值
如果成功,zx_interrupt_trigger() 会返回 ZX_OK。如果失败,则返回负错误值。
错误
ZX_ERR_BAD_HANDLE 句柄是无效的句柄。
ZX_ERR_WRONG_TYPE 句柄不是中断对象。
ZX_ERR_BAD_STATE handle 不是虚拟中断。
在 handle 上调用了 ZX_ERR_CANCELED zx_interrupt_destroy()。
ZX_ERR_ACCESS_DENIED 句柄缺少 ZX_RIGHT_SIGNAL。
ZX_ERR_INVALID_ARGS 选项不为零。