摘要
销毁一个中断对象。
声明
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_destroy(zx_handle_t handle);
说明
zx_interrupt_destroy()
会“销毁”中断对象,使其处于对它的任何 zx_interrupt_wait()
操作都将返回 ZX_ERR_CANCELED
的状态,并且它会与它已绑定到的所有端口解除绑定。
这是一种干净的关闭机制。关闭中断对象的最后一个句柄会导致类似的取消操作,但可能会导致句柄关闭后使用。
如果在取消时中断对象被绑定到某个端口,或者该对象尚未触发,或已触发但 zx_port_wait()
的调用方尚未收到数据包,系统将返回成功,并移除传输中的任何数据包。否则,系统会返回 ZX_ERR_NOT_FOUND
,表明数据包已读取,但尚未通过调用 zx_interrupt_ack()
重新报警中断。
权限
TODO(https://fxbug.dev/42107318)
返回值
zx_interrupt_destroy()
会在成功时返回 ZX_OK
。如果失败,则返回负的错误值。
错误
ZX_ERR_BAD_HANDLE
句柄是无效的句柄。
ZX_ERR_WRONG_TYPE
处理程序不是中断对象。
ZX_ERR_NOT_FOUND
句柄已绑定(现在不复存在),但未处于等待状态。
ZX_ERR_ACCESS_DENIED
句柄缺少 ZX_RIGHT_WRITE
。
另请参阅
zx_handle_close()
zx_interrupt_ack()
zx_interrupt_bind()
zx_interrupt_create()
zx_interrupt_trigger()
zx_interrupt_wait()
zx_port_wait()