IOWorkLoop class
E771035
The IOWorkLoop class is a core I/O Kit synchronization and event-handling mechanism in macOS that serializes work for kernel drivers using command gates and interrupt/event sources.
Observed surface forms (1)
| Surface form | Occurrences |
|---|---|
| IOWorkLoop | 0 |
Statements (46)
| Predicate | Object |
|---|---|
| instanceOf |
C++ class
ⓘ
I/O Kit event-handling mechanism ⓘ I/O Kit synchronization primitive ⓘ |
| benefit |
reduces race conditions in driver code
ⓘ
simplifies driver synchronization design ⓘ |
| concurrencyControl | prevents concurrent execution of event source actions on same work loop ⓘ |
| creationMethod | IOWorkLoop::workLoop() NERFINISHED ⓘ |
| designGoal |
avoid explicit locking in most driver code paths
ⓘ
provide safe context for executing driver callbacks ⓘ |
| documentation | Apple Developer Documentation for I/O Kit NERFINISHED ⓘ |
| ensures |
ordered execution of work items
ⓘ
serialized access to driver state ⓘ |
| handles |
command-gate-enqueued function calls
ⓘ
interrupt-driven events ⓘ timer-driven events ⓘ |
| language | C++ ⓘ |
| layer | kernel space ⓘ |
| lifecycle | created and owned by an IOService subclass ⓘ |
| namespace | Kernel I/O Kit NERFINISHED ⓘ |
| operatingSystem | macOS ⓘ |
| partOf | IOKit framework NERFINISHED ⓘ |
| platform | Darwin kernel NERFINISHED ⓘ |
| primaryRole |
provide event-handling context for drivers
ⓘ
serialize work for kernel drivers ⓘ |
| provides |
execution context for IOEventSource objects
ⓘ
mutual exclusion for driver critical sections ⓘ |
| relatedTo |
IOCommandGate
NERFINISHED
ⓘ
IOEventSource NERFINISHED ⓘ IOInterruptEventSource NERFINISHED ⓘ IOService NERFINISHED ⓘ IOTimerEventSource NERFINISHED ⓘ |
| schedulingGranularity | event source callbacks ⓘ |
| synchronizationModel | single-threaded work loop context ⓘ |
| synchronizationType | cooperative serialization via work loop thread ⓘ |
| synchronizesWith |
IOCommandGate
NERFINISHED
ⓘ
IOEventSource NERFINISHED ⓘ IOInterruptEventSource NERFINISHED ⓘ IOTimerEventSource NERFINISHED ⓘ |
| threadingModel | dedicated kernel thread or shared thread pool ⓘ |
| usedBy |
kernel device drivers
ⓘ
kernel extensions ⓘ |
| usedFor |
deferring interrupt work to thread context
ⓘ
handling hardware interrupts in a serialized context ⓘ scheduling timed callbacks via timer event sources ⓘ synchronizing access to hardware registers ⓘ synchronizing access to shared driver data structures ⓘ |
Referenced by (1)
Full triples — surface form annotated when it differs from this entity's canonical label.