/* Failed to get lock, so release interrupt holdoff */
RESUME_INTERRUPTS();
LOG_LWDEBUG("LWLockAcquireOrWait", T_NAME(l), T_ID(l), "failed");
- TRACE_POSTGRESQL_LWLOCK_WAIT_UNTIL_FREE_FAIL(T_NAME(l), T_ID(l), mode);
+ TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT_FAIL(T_NAME(l), T_ID(l), mode);
}
else
{
/* Add lock to list of locks held by this backend */
held_lwlocks[num_held_lwlocks++] = l;
- TRACE_POSTGRESQL_LWLOCK_WAIT_UNTIL_FREE(T_NAME(l), T_ID(l), mode);
+ TRACE_POSTGRESQL_LWLOCK_ACQUIRE_OR_WAIT(T_NAME(l), T_ID(l), mode);
}
return !mustwait;
PGPROC *proc = MyProc;
int extraWaits = 0;
bool result = false;
+#ifdef LWLOCK_STATS
+ lwlock_stats *lwstats;
+#endif
+
+ PRINT_LWDEBUG("LWLockWaitForVar", lock);
+
+#ifdef LWLOCK_STATS
+ lwstats = get_lwlock_stats_entry(l);
+#endif /* LWLOCK_STATS */
/*
* Quick test first to see if it the slot is free right now.
lwstats->block_count++;
#endif
- TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(l), T_ID(l), mode);
+ TRACE_POSTGRESQL_LWLOCK_WAIT_START(T_NAME(l), T_ID(l), LW_EXCLUSIVE);
for (;;)
{
extraWaits++;
}
- TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(T_NAME(l), T_ID(l), mode);
+ TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(T_NAME(l), T_ID(l), LW_EXCLUSIVE);
LOG_LWDEBUG("LWLockWaitForVar", T_NAME(l), T_ID(l), "awakened");
/* We are done updating shared state of the lock itself. */
SpinLockRelease(&lock->mutex);
- TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(l), T_ID(l), mode);
+ TRACE_POSTGRESQL_LWLOCK_ACQUIRE(T_NAME(l), T_ID(l), LW_EXCLUSIVE);
/*
* Fix the process wait semaphore's count for any absorbed wakeups.
probe lwlock__wait__done(const char *, int, LWLockMode);
probe lwlock__condacquire(const char *, int, LWLockMode);
probe lwlock__condacquire__fail(const char *, int, LWLockMode);
- probe lwlock__wait__until__free(const char *, int, LWLockMode);
- probe lwlock__wait__until__free__fail(const char *, int, LWLockMode);
+ probe lwlock__acquire__or__wait(const char *, int, LWLockMode);
+ probe lwlock__acquire__or__wait__fail(const char *, int, LWLockMode);
probe lock__wait__start(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE);
probe lock__wait__done(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE);