diff options
Diffstat (limited to 'src/backend/storage')
-rw-r--r-- | src/backend/storage/lmgr/lwlock.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/backend/storage/lmgr/lwlock.c b/src/backend/storage/lmgr/lwlock.c index fc5c76a48f8..38317edaf96 100644 --- a/src/backend/storage/lmgr/lwlock.c +++ b/src/backend/storage/lmgr/lwlock.c @@ -1926,6 +1926,32 @@ LWLockHeldByMe(LWLock *l) } /* + * LWLockHeldByMe - test whether my process holds any of an array of locks + * + * This is meant as debug support only. + */ +bool +LWLockAnyHeldByMe(LWLock *l, int nlocks, size_t stride) +{ + char *held_lock_addr; + char *begin; + char *end; + int i; + + begin = (char *) l; + end = begin + nlocks * stride; + for (i = 0; i < num_held_lwlocks; i++) + { + held_lock_addr = (char *) held_lwlocks[i].lock; + if (held_lock_addr >= begin && + held_lock_addr < end && + (held_lock_addr - begin) % stride == 0) + return true; + } + return false; +} + +/* * LWLockHeldByMeInMode - test whether my process holds a lock in given mode * * This is meant as debug support only. |