本文整理汇总了C++中IOWorkLoop::tryCloseGate方法的典型用法代码示例。如果您正苦于以下问题:C++ IOWorkLoop::tryCloseGate方法的具体用法?C++ IOWorkLoop::tryCloseGate怎么用?C++ IOWorkLoop::tryCloseGate使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOWorkLoop
的用法示例。
在下文中一共展示了IOWorkLoop::tryCloseGate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: attemptAction
IOReturn IOCommandGate::attemptAction(Action inAction,
void *arg0, void *arg1,
void *arg2, void *arg3)
{
IOReturn res;
IOWorkLoop * wl;
if (!inAction)
return kIOReturnBadArgument;
if (!(wl = workLoop))
return kIOReturnNotReady;
// Try to close the gate if can't get return immediately.
if (!wl->tryCloseGate())
return kIOReturnCannotLock;
// If the command gate is disabled then sleep until we get a wakeup
if (!wl->onThread() && !enabled)
res = kIOReturnNotPermitted;
else {
bool trace = ( gIOKitTrace & kIOTraceCommandGates ) ? true : false;
if (trace)
IOTimeStampStartConstant(IODBG_CMDQ(IOCMDQ_ACTION),
VM_KERNEL_UNSLIDE(inAction), (uintptr_t) owner);
IOStatisticsActionCall();
res = (*inAction)(owner, arg0, arg1, arg2, arg3);
if (trace)
IOTimeStampEndConstant(IODBG_CMDQ(IOCMDQ_ACTION),
VM_KERNEL_UNSLIDE(inAction), (uintptr_t) owner);
}
wl->openGate();
return res;
}