+IOReturn IOWorkLoop::runAction(Action inAction, OSObject *target,
+ void *arg0 = 0, void *arg1 = 0,
+ void *arg2 = 0, void *arg3 = 0)
+{
+ IOReturn res;
+
+ // closeGate is recursive so don't worry if we already hold the lock.
+ closeGate();
+ res = (*inAction)(target, arg0, arg1, arg2, arg3);
+ openGate();
+
+ return res;
+}
+