]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/IOWorkLoop.cpp
xnu-2782.20.48.tar.gz
[apple/xnu.git] / iokit / Kernel / IOWorkLoop.cpp
index 51045a234cfe441eb52768a62bf6af452a3e72a9..0789f66bb4baf299359bf97ef220eaa319e61492 100644 (file)
@@ -34,6 +34,7 @@
 #include <IOKit/IOTimeStamp.h>
 #include <IOKit/IOKitDebug.h>
 #include <libkern/OSDebug.h>
+#include <kern/thread.h>
 
 #define super OSObject
 
@@ -143,11 +144,6 @@ bool IOWorkLoop::init()
         workToDo = false;
     }
 
-    if (!reserved) {
-        reserved = IONew(ExpansionData, 1);
-        reserved->options = 0;
-    }
-       
     IOStatisticsRegisterCounter();
 
     if ( controlG == NULL ) {
@@ -177,6 +173,7 @@ bool IOWorkLoop::init()
             return false;
     }
 
+    (void) thread_set_tag(workThread, THREAD_TAG_IOWORKLOOP);
     return true;
 }
 
@@ -556,6 +553,8 @@ IOReturn IOWorkLoop::_maintRequest(void *inC, void *inD, void *, void *)
 
     case mRemoveEvent:
         if (inEvent->getWorkLoop()) {
+               IOStatisticsDetachEventSource();
+               
                if (eventSourcePerformsWork(inEvent)) {
                                if (eventChain == inEvent)
                                        eventChain = inEvent->getNext();
@@ -595,7 +594,6 @@ IOReturn IOWorkLoop::_maintRequest(void *inC, void *inD, void *, void *)
             inEvent->setNext(0);
             inEvent->release();
             SETP(&fFlags, kLoopRestart);
-            IOStatisticsDetachEventSource();
         }
         break;