Rename LWLockWaitUntilFree to LWLockAcquireOrWait.

LWLockAcquireOrWait makes it more clear that the lock is acquired if it's
free.
pull/1/head
Heikki Linnakangas 14 years ago
parent af7dd696b0
commit 1a01560cbb
  1. 2
      src/backend/access/transam/xlog.c
  2. 12
      src/backend/storage/lmgr/lwlock.c
  3. 2
      src/include/storage/lwlock.h

@ -2145,7 +2145,7 @@ XLogFlush(XLogRecPtr record)
* helps to maintain a good rate of group committing when the system * helps to maintain a good rate of group committing when the system
* is bottlenecked by the speed of fsyncing. * is bottlenecked by the speed of fsyncing.
*/ */
if (!LWLockWaitUntilFree(WALWriteLock, LW_EXCLUSIVE)) if (!LWLockAcquireOrWait(WALWriteLock, LW_EXCLUSIVE))
{ {
/* /*
* The lock is now free, but we didn't acquire it yet. Before we * The lock is now free, but we didn't acquire it yet. Before we

@ -572,7 +572,7 @@ LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode)
} }
/* /*
* LWLockWaitUntilFree - Wait until a lock is free * LWLockAcquireOrWait - Acquire lock, or wait until it's free
* *
* The semantics of this function are a bit funky. If the lock is currently * The semantics of this function are a bit funky. If the lock is currently
* free, it is acquired in the given mode, and the function returns true. If * free, it is acquired in the given mode, and the function returns true. If
@ -586,14 +586,14 @@ LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode)
* wake up, observe that their records have already been flushed, and return. * wake up, observe that their records have already been flushed, and return.
*/ */
bool bool
LWLockWaitUntilFree(LWLockId lockid, LWLockMode mode) LWLockAcquireOrWait(LWLockId lockid, LWLockMode mode)
{ {
volatile LWLock *lock = &(LWLockArray[lockid].lock); volatile LWLock *lock = &(LWLockArray[lockid].lock);
PGPROC *proc = MyProc; PGPROC *proc = MyProc;
bool mustwait; bool mustwait;
int extraWaits = 0; int extraWaits = 0;
PRINT_LWDEBUG("LWLockWaitUntilFree", lockid, lock); PRINT_LWDEBUG("LWLockAcquireOrWait", lockid, lock);
#ifdef LWLOCK_STATS #ifdef LWLOCK_STATS
/* Set up local count state first time through in a given process */ /* Set up local count state first time through in a given process */
@ -665,7 +665,7 @@ LWLockWaitUntilFree(LWLockId lockid, LWLockMode mode)
* Wait until awakened. Like in LWLockAcquire, be prepared for bogus * Wait until awakened. Like in LWLockAcquire, be prepared for bogus
* wakups, because we share the semaphore with ProcWaitForSignal. * wakups, because we share the semaphore with ProcWaitForSignal.
*/ */
LOG_LWDEBUG("LWLockWaitUntilFree", lockid, "waiting"); LOG_LWDEBUG("LWLockAcquireOrWait", lockid, "waiting");
#ifdef LWLOCK_STATS #ifdef LWLOCK_STATS
block_counts[lockid]++; block_counts[lockid]++;
@ -684,7 +684,7 @@ LWLockWaitUntilFree(LWLockId lockid, LWLockMode mode)
TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(lockid, mode); TRACE_POSTGRESQL_LWLOCK_WAIT_DONE(lockid, mode);
LOG_LWDEBUG("LWLockWaitUntilFree", lockid, "awakened"); LOG_LWDEBUG("LWLockAcquireOrWait", lockid, "awakened");
} }
else else
{ {
@ -702,7 +702,7 @@ LWLockWaitUntilFree(LWLockId lockid, LWLockMode mode)
{ {
/* Failed to get lock, so release interrupt holdoff */ /* Failed to get lock, so release interrupt holdoff */
RESUME_INTERRUPTS(); RESUME_INTERRUPTS();
LOG_LWDEBUG("LWLockWaitUntilFree", lockid, "failed"); LOG_LWDEBUG("LWLockAcquireOrWait", lockid, "failed");
TRACE_POSTGRESQL_LWLOCK_WAIT_UNTIL_FREE_FAIL(lockid, mode); TRACE_POSTGRESQL_LWLOCK_WAIT_UNTIL_FREE_FAIL(lockid, mode);
} }
else else

@ -108,7 +108,7 @@ extern bool Trace_lwlocks;
extern LWLockId LWLockAssign(void); extern LWLockId LWLockAssign(void);
extern void LWLockAcquire(LWLockId lockid, LWLockMode mode); extern void LWLockAcquire(LWLockId lockid, LWLockMode mode);
extern bool LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode); extern bool LWLockConditionalAcquire(LWLockId lockid, LWLockMode mode);
extern bool LWLockWaitUntilFree(LWLockId lockid, LWLockMode mode); extern bool LWLockAcquireOrWait(LWLockId lockid, LWLockMode mode);
extern void LWLockRelease(LWLockId lockid); extern void LWLockRelease(LWLockId lockid);
extern void LWLockReleaseAll(void); extern void LWLockReleaseAll(void);
extern bool LWLockHeldByMe(LWLockId lockid); extern bool LWLockHeldByMe(LWLockId lockid);

Loading…
Cancel
Save