---
title: IORecursiveLockHaveLock
framework: driverkit
role: symbol
role_heading: Function
path: driverkit/iorecursivelockhavelock
---

# IORecursiveLockHaveLock

## Declaration

```occ
bool IORecursiveLockHaveLock(struct IORecursiveLock *lock);
```

## Parameters

- `lock`: Pointer to the allocated lock.

## Return Value

Return Value True if the calling thread holds the lock otherwise false.

## Discussion

Discussion Check if a recursive lock is held by the calling thread. If the lock is held by the calling thread, return true, otherwise the lock is unlocked, or held by another thread and false is returned.

## 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)
