---
title: IORecursiveLockAlloc
framework: driverkit
role: symbol
role_heading: Function
path: driverkit/iorecursivelockalloc
---

# IORecursiveLockAlloc

## Declaration

```occ
struct IORecursiveLock *IORecursiveLockAlloc();
```

## Return Value

Return Value Pointer to the allocated lock, or zero on failure.

## Discussion

Discussion Allocates and initializes an recursive lock. Allocates a recursive lock in general purpose memory, and initializes it. Recursive locks function identically to mutexes but allow one thread to lock more than once, with balanced unlocks.

## See Also

### Functions

- [dequeue_head](driverkit/dequeue_head.md)
- [dequeue_tail](driverkit/dequeue_tail.md)
- [enqueue_head](driverkit/enqueue_head.md)
- [enqueue_tail](driverkit/enqueue_tail.md)
- [get_IOHistogramReporter_IVars](driverkit/get_iohistogramreporter_ivars-4lwpg.md)
- [get_IOHistogramReporter_IVars](driverkit/get_iohistogramreporter_ivars-5lkdv.md)
- [get_IOReporter_IVars](driverkit/get_ioreporter_ivars-6q8vt.md)
- [get_IOReporter_IVars](driverkit/get_ioreporter_ivars-89ntc.md)
- [get_IOStateReporter_IVars](driverkit/get_iostatereporter_ivars-3g28i.md)
- [get_IOStateReporter_IVars](driverkit/get_iostatereporter_ivars-56435.md)
- [insque](driverkit/insque.md)
- [IOCallOnce](driverkit/iocallonce.md)
- [IOLockAlloc](driverkit/iolockalloc.md)
- [IOLockAssert](driverkit/iolockassert.md)
- [IOLockFree](driverkit/iolockfree.md)
