zx_interrupt_destroy
名称
interrupt_destroy —— 销毁中断对象
概要
#include <zircon/syscalls.h>
zx_status_t zx_interrupt_destroy(zx_handle_t handle);
描述
interrupt_destroy() 的功能是“销毁”一个中断对象,使其处于对其执行任何interrupt_wait() 操作都将返回ZX_ERR_CANCELED的状态,并且将它从绑定到的任何端口上解除绑定。
该调用提供了一种干净的关闭机制。 关闭中断对象的最后一个句柄会导致类似的取消操作,但可能会导致句柄发生使用后关闭(use-after-close)的情况。
如果在取消发生时中断对象已被绑定到某端口,但它尚未触发,或者它已触发但是仍然没有被port_wait() 调用的调用者接收到该数据包,则取消成功并且任何尚在传递过程的数据包将被删除。 否则,将返回ZX_ERR_NOT_FOUND,表示已读取该数据包,但调用interrupt_ack() 重新设置中断。
权限
TODO(ZX-2399)
返回值
interrupt_destroy() 调用成功返回ZX_OK。如果调用失败,则返回负的错误码。
ERRORS
ZX_ERR_BAD_HANDLE: handle是无效句柄。
ZX_ERR_WRONG_TYPE:handle不是中断类型对象。
ZX_ERR_NOT_FOUND:handle被绑定(但现在已不再是)但是没有被等待。
ZX_ERR_ACCESS_DENIED:handle缺少ZX_RIGHT_WRITE权限。
另见
interrupt_ack, interrupt_bind, interrupt_create, interrupt_trigger, interrupt_wait, port_wait, handle_close.