Loading...
--- 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;