Z_中断中断

摘要

触发虚拟中断对象。

声明

#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 选项不为零。

另请参阅