中断时间创建

摘要

创建中断对象。

声明

#include <zircon/syscalls.h>

zx_status_t zx_interrupt_create(zx_handle_t src_obj,
                                uint32_t src_num,
                                uint32_t options,
                                zx_handle_t* out_handle);

说明

zx_interrupt_create() 会创建一个中断对象,代表物理设备的 或虚拟中断。

如果 optionsZX_INTERRUPT_VIRTUALsrc_objsrc_num 会被忽略,并且 就会返回虚拟中断

否则,src_obj 必须是用于创建平台中断的合适资源 或 PCI 对象,src_num 是相关的中断编号。src_num这会限制 创建对 DDK(驱动程序开发套件)内部结构的中断。 物理中断由驱动程序通过各种 DDK API 获取。

物理中断遵循 ZX_INTERRUPT_EDGE_LOWZX_INTERRUPT_EDGE_HIGHZX_INTERRUPT_LEVEL_LOWZX_INTERRUPT_LEVEL_HIGHZX_INTERRUPT_REMAP_IRQ

标识名将具有 ZX_RIGHT_INSPECTZX_RIGHT_DUPLICATEZX_RIGHT_TRANSFER (允许通过 zx_channel_write() 将其发送到其他进程)、ZX_RIGHT_READZX_RIGHT_WRITE(对于 zx_interrupt_ack() 为必需),ZX_RIGHT_WAIT(对于 zx_interrupt_wait()ZX_RIGHT_SIGNAL(对于 zx_interrupt_trigger() 为必需)。

中断被称为“触发”当底层物理中断发生时 或者对虚拟中断调用 zx_interrupt_trigger() 时。触发的中断 当使用 zx_interrupt_bind() 绑定到某个端口时,会导致数据包传送到该端口。

如果未绑定到端口,可以使用 zx_interrupt_wait() 等待中断对象。

在使用 zx_object_wait_ 系列调用时不能等待中断。

权限

src_obj 必须具有资源种类 ZX_RSRC_KIND_IRQ

返回值

如果成功,zx_interrupt_create() 会返回 ZX_OK。在活动中 则会返回负的错误值。

错误

ZX_ERR_BAD_HANDLE 表示 src_obj 句柄无效(如果这不是虚拟中断)

ZX_ERR_WRONG_TYPEsrc_obj 句柄不是创建中断的适当类型。

ZX_ERR_ACCESS_DENIEDsrc_obj 句柄不允许执行此操作。

ZX_ERR_INVALID_ARGS options 包含无效标志或 out_handle 参数是无效的指针。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

另请参阅