Searched refs:IOWorkLoop (Results 1 - 25 of 27) sorted by relevance

12

/xnu-2422.115.4/iokit/IOKit/
H A DIOWorkLoop.h47 /*! @class IOWorkLoop
48 @discussion An IOWorkLoop is a thread of control that is intended to be used to provide single threaded access to hardware. This class has no knowledge of the nature and type of the events that it marshals and forwards. When a device driver successfully starts (see IOService::start), it is expected to create the event sources it will need to receive events. Then a work loop is initialized and the events are added to the work loop for monitoring. In general this set up will be automated by the family superclass of the specific device.
54 class IOWorkLoop : public OSObject class in inherits:OSObject
56 OSDeclareDefaultStructors(IOWorkLoop)
85 static void threadMainContinuation(IOWorkLoop *self);
89 IOWorkLoop uses this to determine if the event source should be polled in runEventSources() or not.
105 This is a recursive lock, which allows multiple layers of code to share a single IOWorkLoop without deadlock. This is common in IOKit since threads of execution tend to follow the service plane in the IORegistry, and multiple objects along the call path may acquire the gate for the same (shared) workloop.
140 @discussion This structure will be used to expand the capablilties of the IOWorkLoop in the future.
191 static IOWorkLoop *workLoop();
198 static IOWorkLoop *workLoopWithOption
[all...]
H A DIOCommandPool.h60 #include <IOKit/IOWorkLoop.h>
125 virtual bool initWithWorkLoop(IOWorkLoop *workLoop);
140 static IOCommandPool *withWorkLoop(IOWorkLoop *inWorkLoop);
147 IOWorkLoop *inWorkLoop,
155 IOWorkLoop *inWorkLoop,
H A DIOEventSource.h45 #include <IOKit/IOWorkLoop.h>
60 event sources must inherit from if an IOWorkLoop is to receive events from them.
75 The IOEventSource makes no attempt to maintain the consistency of its internal data across multi-threading. It is assumed that the user of these basic tools will protect the data that these objects represent in some sort of device wide instance lock. For example the IOWorkLoop maintains the event chain by using an IOCommandGate and thus single threading access to its state.
87 friend class IOWorkLoop;
126 IOWorkLoop *workLoop;
167 @abstract Virtual member function used by IOWorkLoop for work
182 IOWorkLoop that at least reacts to signalWorkAvailable() and onThread functions.
184 virtual void setWorkLoop(IOWorkLoop *workLoop);
201 // Methods to access the IOWorkLoop exported fields
242 virtual IOWorkLoop *getWorkLoo
[all...]
H A DIOTimerEventSource.h76 IOWorkLoop * workLoop;
98 virtual void setWorkLoop(IOWorkLoop *workLoop);
H A DIOCommandGate.h88 @discussion This structure will be used to expand the capablilties of the IOWorkLoop in the future.
117 virtual void setWorkLoop(IOWorkLoop *inWorkLoop);
203 @discussion When a command gate is disabled all future calls to runAction and runCommand will stall until the gate is enable()d later. This can be used to block client threads when a system sleep is requested. The IOWorkLoop thread itself will never stall, even when making runAction/runCommand calls. This call must be made from a gated context, to clear potential race conditions. */
H A DIOInterruptEventSource.h47 @discussion The IOInterruptEventSource is a generic object that delivers calls interrupt routines in it's client in a guaranteed single-threaded manner. IOInterruptEventSource is part of the IOKit $link IOWorkLoop infrastructure where the semantic that one and only one action method is executing within a work-loops event chain.
51 In general a client will use the factory member function to create and initialise the event source and then add it to their work-loop. It is the work loop's responsiblity to maintain the new event source in it's event chain. See $link IOWorkLoop.
97 @discussion This structure will be used to expand the capablilties of the IOWorkLoop in the future.
110 @abstract Pure Virtual member function used by IOWorkLoop for issueing a client calls.
117 virtual void setWorkLoop(IOWorkLoop *inWorkLoop);
H A DIOServicePM.h37 class IOWorkLoop;
H A DIOStatisticsPrivate.h55 class IOWorkLoop;
164 IOWorkLoop *workLoop;
250 static IOWorkLoopCounter *registerWorkLoop(IOWorkLoop *workLoop);
H A DIOPlatformExpert.h282 IOWorkLoop *workLoop;
292 virtual IOWorkLoop *getWorkLoop() const;
H A DIOService.h927 virtual IOWorkLoop * getWorkLoop() const;
1620 virtual IOWorkLoop * getPMworkloop( void )
1780 static IOWorkLoop * getPMworkloop( void );
/xnu-2422.115.4/iokit/Kernel/
H A DIOWorkLoop.cpp30 #include <IOKit/IOWorkLoop.h>
41 OSDefineMetaClassAndStructors(IOWorkLoop, OSObject);
45 OSMetaClassDefineReservedUnused(IOWorkLoop, 0);
46 OSMetaClassDefineReservedUnused(IOWorkLoop, 1);
47 OSMetaClassDefineReservedUnused(IOWorkLoop, 2);
49 OSMetaClassDefineReservedUsed(IOWorkLoop, 0);
50 OSMetaClassDefineReservedUsed(IOWorkLoop, 1);
51 OSMetaClassDefineReservedUsed(IOWorkLoop, 2);
53 OSMetaClassDefineReservedUnused(IOWorkLoop, 3);
54 OSMetaClassDefineReservedUnused(IOWorkLoop,
[all...]
H A DIOCommandPool.cpp58 withWorkLoop(IOWorkLoop *inWorkLoop)
72 initWithWorkLoop(IOWorkLoop *inWorkLoop)
97 commandPool(IOService * inOwner, IOWorkLoop *inWorkLoop, UInt32 inSize)
110 init(IOService */* inOwner */, IOWorkLoop *inWorkLoop, UInt32 /* inSize */)
125 IOWorkLoop *wl = fSerializer->getWorkLoop();
H A DIOEventSource.cpp38 #include <IOKit/IOWorkLoop.h>
203 void IOEventSource::setWorkLoop(IOWorkLoop *inWorkLoop)
210 IOWorkLoop *IOEventSource::getWorkLoop() const
H A DIOCommandGate.cpp31 #include <IOKit/IOWorkLoop.h>
118 /* virtual */ void IOCommandGate::setWorkLoop(IOWorkLoop *inWorkLoop)
H A DIOTimerEventSource.cpp40 #include <IOKit/IOWorkLoop.h>
106 IOWorkLoop *
148 IOWorkLoop *
350 void IOTimerEventSource::setWorkLoop(IOWorkLoop *inWorkLoop)
H A DIOFilterInterruptEventSource.cpp33 #include <IOKit/IOWorkLoop.h>
H A DIOInterruptEventSource.cpp35 #include <IOKit/IOWorkLoop.h>
168 void IOInterruptEventSource::setWorkLoop(IOWorkLoop *inWorkLoop)
H A DIOServicePrivate.h173 virtual IOWorkLoop * getWorkLoop( ) const;
H A DIOCommandQueue.cpp32 #include <IOKit/IOWorkLoop.h>
H A DIOPlatformExpert.cpp37 #include <IOKit/IOWorkLoop.h>
1367 workLoop = IOWorkLoop::workLoop();
1374 IOWorkLoop *IOPlatformExpertDevice::getWorkLoop() const
H A DIOService.cpp48 #include <IOKit/IOWorkLoop.h>
792 IOWorkLoop * IOService::getWorkLoop() const
1674 static void _workLoopAction( IOWorkLoop::Action action,
1679 IOWorkLoop * wl;
2176 _workLoopAction( (IOWorkLoop::Action) &actionWillTerminate,
2195 _workLoopAction( (IOWorkLoop::Action) &actionDidTerminate,
2209 _workLoopAction( (IOWorkLoop::Action) &actionFinalize,
2256 _workLoopAction( (IOWorkLoop::Action) &actionStop,
4373 IOWorkLoop * IOResources::getWorkLoop() const
H A DIOServicePM.cpp39 #include <IOKit/IOWorkLoop.h>
93 static IOWorkLoop * gIOPMWorkLoop = 0;
302 gIOPMWorkLoop = IOWorkLoop::workLoop();
2678 IOWorkLoop * IOService::getPMworkloop( void )
3099 OSMemberFunctionCast(IOWorkLoop::Action, me,
5080 OSMemberFunctionCast(IOWorkLoop::Action, me, &IOService::settleTimerExpired),
8549 OSMemberFunctionCast(IOWorkLoop::Action, this, &IOServicePM::gatedSerialize),
H A DIOStatistics.cpp483 IOWorkLoopCounter* IOStatistics::registerWorkLoop(IOWorkLoop *workLoop)
/xnu-2422.115.4/iokit/Tests/
H A DTests.h71 class IOWorkLoop;
82 IOWorkLoop *workLoop;
H A DTestDevice.cpp34 #include <IOKit/IOWorkLoop.h>
59 workLoop = IOWorkLoop::workLoop();

Completed in 243 milliseconds

12