Glossary
IOWorkLoop
A single-threaded event queue an IOKit driver uses to serialize all its event handling — interrupts, timers, IO completions. Implicit per-driver locking comes for free.
An IOWorkLoop is a kernel thread that processes events from a queue, one at a time. It's IOKit's standard concurrency model: every event handler a driver registers (interrupts, timers, IO completions) runs on the same workloop, so the driver's mutable state is implicitly protected — only one handler runs at a time.
When a top-half interrupt handler decides to schedule a bottom-half action, it enqueues the event on the driver's workloop. The workloop's thread wakes, dequeues, calls the registered action callback.
This single-threaded execution model is one reason IOKit drivers are usually easier to write than equivalent Linux drivers — you don't need per-driver locks because the workloop guarantees serial execution. The trade-off: maximum throughput is bounded by what one thread can do.
Workloops have names visible in ps, like com.apple.AppleBCM43xx-workloop. Each driver typically has one.
See also: IOInterruptDispatchSource, IOKit, and the interrupt handling article.