摘要
销毁中断对象。
声明
#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 handle 是无效句柄。
ZX_ERR_WRONG_TYPE handle 不是中断对象。
ZX_ERR_NOT_FOUND handle 已绑定(现在已不再绑定),但未被等待。
ZX_ERR_ACCESS_DENIED handle 缺少 ZX_RIGHT_WRITE。