摘要
确认中断并重新启用中断。
声明
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_ack(zx_handle_t handle);
说明
zx_interrupt_ack() 会确认之前触发的端口绑定中断对象,使其重置为未触发状态,并有资格再次触发,同时向其绑定的端口传送数据包。
如果中断对象是仍处于断言状态的物理级触发中断,或者是自上次触发以来一直处于断言状态的边沿或虚拟中断,则中断会立即再次触发,并向其绑定的端口传送数据包。
此系统调用仅适用于绑定到端口的中断。 使用
zx_interrupt_wait()等待的中断无法通过此调用重新启用,而是在之前的zx_interrupt_wait()操作
满足条件后再次调用
zx_interrupt_wait()时自动重新启用。如需详细了解在使用
端口绑定中断对象时如何正确等待和确认中断事件,请参阅(此处)Interrupts#asynchronous-waiting-and-acknowledgement
。
权限
handle 的类型必须为 ZX_OBJ_TYPE_INTERRUPT,并且具有 ZX_RIGHT_WRITE。
返回值
如果成功,zx_interrupt_ack() 会返回 ZX_OK。如果失败,则返回负错误值。
错误
ZX_ERR_BAD_HANDLE handle 是无效句柄。
ZX_ERR_WRONG_TYPE handle 不是中断对象。
ZX_ERR_BAD_STATE handle 未绑定到端口。
ZX_ERR_CANCELED 已对 handle 调用 zx_interrupt_destroy()。
ZX_ERR_ACCESS_DENIED handle 缺少 ZX_RIGHT_WRITE。