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

# IORecursiveLockHaveLock

Check if a recursive lock is held by the calling thread.

## Declaration

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

```occ
boolean_t IORecursiveLockHaveLock(const 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 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

### Recursive Locks

- [IORecursiveLockAlloc](kernel/1553013-iorecursivelockalloc.md)
- [IORecursiveLockFree](kernel/1553031-iorecursivelockfree.md)
- [IORecursiveLockGetMachLock](kernel/1552988-iorecursivelockgetmachlock.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)
