---
title: Locks
framework: kernel
role: collectionGroup
role_heading: API Collection
path: kernel/iokit_fundamentals/locks
---

# Locks

## Topics

### Simple Locks

- [IOSimpleLockAlloc](kernel/1553017-iosimplelockalloc.md)
- [IOSimpleLockInit](kernel/1552990-iosimplelockinit.md)
- [IOSimpleLockDestroy](kernel/3380136-iosimplelockdestroy.md)
- [IOSimpleLockFree](kernel/1553035-iosimplelockfree.md)
- [IOSimpleLockGetMachLock](kernel/1553019-iosimplelockgetmachlock.md)
- [IOSimpleLockLock](kernel/1552997-iosimplelocklock.md)
- [IOSimpleLockLockDisableInterrupt](kernel/1553005-iosimplelocklockdisableinterrupt.md)
- [IOSimpleLockTryLock](kernel/1553029-iosimplelocktrylock.md)
- [IOSimpleLockUnlock](kernel/1553015-iosimplelockunlock.md)
- [IOSimpleLockUnlockEnableInterrupt](kernel/1552998-iosimplelockunlockenableinterrup.md)

### Mutexes

- [IOLockAlloc](kernel/1553021-iolockalloc.md)
- [IOLockInitWithState](kernel/1553028-iolockinitwithstate.md)
- [IOLockFree](kernel/1553034-iolockfree.md)
- [IOTryLock](kernel/1553012-iotrylock.md)
- [IOTakeLock](kernel/1553007-iotakelock.md)
- [IOLockLock](kernel/1553000-iolocklock.md)
- [IOUnlock](kernel/1552994-iounlock.md)
- [IOLockTryLock](kernel/1553018-iolocktrylock.md)
- [IOLockUnlock](kernel/1553006-iolockunlock.md)
- [IOLockWakeup](kernel/1553016-iolockwakeup.md)
- [IOLockSleep](kernel/1553026-iolocksleep.md)
- [IOLockSleepDeadline](kernel/1553030-iolocksleepdeadline.md)
- [IOLockGetMachLock](kernel/1553008-iolockgetmachlock.md)

### Read/Write Locks

- [IORWLockAlloc](kernel/1553010-iorwlockalloc.md)
- [IORWLockFree](kernel/1553003-iorwlockfree.md)
- [IORWLockGetMachLock](kernel/1553033-iorwlockgetmachlock.md)
- [IORWLockRead](kernel/1553004-iorwlockread.md)
- [IORWLockUnlock](kernel/1553011-iorwlockunlock.md)
- [IORWLockWrite](kernel/1552996-iorwlockwrite.md)
- [IORWUnlock](kernel/1553027-iorwunlock.md)
- [IOWriteLock](kernel/1552985-iowritelock.md)
- [IOReadLock](kernel/1553022-ioreadlock.md)

### Recursive Locks

- [IORecursiveLockAlloc](kernel/1553013-iorecursivelockalloc.md)
- [IORecursiveLockFree](kernel/1553031-iorecursivelockfree.md)
- [IORecursiveLockGetMachLock](kernel/1552988-iorecursivelockgetmachlock.md)
- [IORecursiveLockHaveLock](kernel/1552995-iorecursivelockhavelock.md)
- [IORecursiveLockLock](kernel/1553020-iorecursivelocklock.md)
- [IORecursiveLockSleep](kernel/1553001-iorecursivelocksleep.md)
- [IORecursiveLockSleepDeadline](kernel/1552986-iorecursivelocksleepdeadline.md)
- [IORecursiveLockTryLock](kernel/1552993-iorecursivelocktrylock.md)
- [IORecursiveLockUnlock](kernel/1553032-iorecursivelockunlock.md)
- [IORecursiveLockWakeup](kernel/1553014-iorecursivelockwakeup.md)

### Condition Lock

- [IOConditionLock](kernel/ioconditionlock.md)

## See Also

### Resources

- [Memory](kernel/iokit_fundamentals/memory.md)
- [Workflow and Control](kernel/iokit_fundamentals/workflow_and_control.md)
- [Data Types](kernel/libkern/data_types.md)
