Loading...
iokit/Kernel/IOWorkLoop.cpp xnu-1504.7.4 xnu-1228
--- xnu/xnu-1504.7.4/iokit/Kernel/IOWorkLoop.cpp
+++ xnu/xnu-1228/iokit/Kernel/IOWorkLoop.cpp
@@ -32,8 +32,6 @@
     1998-7-13	Godfrey van der Linden(gvdl)
         Created.
 */
-
-#include <pexpert/pexpert.h>
 #include <IOKit/IOWorkLoop.h>
 #include <IOKit/IOEventSource.h>
 #include <IOKit/IOInterruptEventSource.h>
@@ -46,15 +44,10 @@
 OSDefineMetaClassAndStructors(IOWorkLoop, OSObject);
 
 // Block of unused functions intended for future use
-#if __LP64__
-OSMetaClassDefineReservedUnused(IOWorkLoop, 0);
-OSMetaClassDefineReservedUnused(IOWorkLoop, 1);
-OSMetaClassDefineReservedUnused(IOWorkLoop, 2);
-#else
 OSMetaClassDefineReservedUsed(IOWorkLoop, 0);
 OSMetaClassDefineReservedUsed(IOWorkLoop, 1);
-OSMetaClassDefineReservedUsed(IOWorkLoop, 2);
-#endif
+
+OSMetaClassDefineReservedUnused(IOWorkLoop, 2);
 OSMetaClassDefineReservedUnused(IOWorkLoop, 3);
 OSMetaClassDefineReservedUnused(IOWorkLoop, 4);
 OSMetaClassDefineReservedUnused(IOWorkLoop, 5);
@@ -80,7 +73,6 @@
 
 #define fFlags loopRestart
 
-
 bool IOWorkLoop::init()
 {
     // The super init and gateLock allocation MUST be done first
@@ -118,11 +110,12 @@
     }
 
     if ( workThread == NULL ) {
-        thread_continue_t cptr = OSMemberFunctionCast(
-            thread_continue_t,
+        IOThreadFunc cptr = OSMemberFunctionCast(
+            IOThreadFunc,
             this,
             &IOWorkLoop::threadMain);
-        if (KERN_SUCCESS != kernel_thread_start(cptr, this, &workThread))
+        workThread = IOCreateThread(cptr, this);
+        if (!workThread)
             return false;
     }
 
@@ -308,10 +301,7 @@
     bool more;
     do {
 	CLRP(&fFlags, kLoopRestart);
-	more = false;
-	IOInterruptState is = IOSimpleLockLockDisableInterrupt(workToDoLock);
-	workToDo = false;
-	IOSimpleLockUnlockEnableInterrupt(workToDoLock, is);
+	workToDo = more = false;
 	for (IOEventSource *evnt = eventChain; evnt; evnt = evnt->getNext()) {
 
 	    IOTimeClientS();
@@ -362,12 +352,9 @@
     } while(workToDo);
 
 exitThread:
-	thread_t thread = workThread;
     workThread = 0;	// Say we don't have a loop and free ourselves
     free();
-
-	thread_deallocate(thread);
-    (void) thread_terminate(thread);
+    IOExitThread();
 }
 
 IOThread IOWorkLoop::getThread() const
@@ -416,11 +403,6 @@
     return IORecursiveLockSleep(gateLock, event, interuptibleType);
 }
 
-int IOWorkLoop::sleepGate(void *event, AbsoluteTime deadline, UInt32 interuptibleType)
-{
-    return IORecursiveLockSleepDeadline(gateLock, event, deadline, interuptibleType);
-}
-
 void IOWorkLoop::wakeupGate(void *event, bool oneThread)
 {
     IORecursiveLockWakeup(gateLock, event, oneThread);
@@ -442,7 +424,7 @@
 
 IOReturn IOWorkLoop::_maintRequest(void *inC, void *inD, void *, void *)
 {
-    maintCommandEnum command = (maintCommandEnum) (uintptr_t) inC;
+    maintCommandEnum command = (maintCommandEnum) (vm_address_t) inC;
     IOEventSource *inEvent = (IOEventSource *) inD;
     IOReturn res = kIOReturnSuccess;