|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.72 2000/04/12 17:15:38 momjian Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.72.2.1 2000/09/20 07:20:27 inoue Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
|
47 | 47 | * This is so that we can support more backends. (system-wide semaphore
|
48 | 48 | * sets run out pretty fast.) -ay 4/95
|
49 | 49 | *
|
50 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.72 2000/04/12 17:15:38 momjian Exp $ |
| 50 | + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/proc.c,v 1.72.2.1 2000/09/20 07:20:27 inoue Exp $ |
51 | 51 | */
|
52 | 52 | #include <sys/time.h>
|
53 | 53 | #include <unistd.h>
|
@@ -326,18 +326,20 @@ GetOffWaitqueue(PROC *proc)
|
326 | 326 | if (proc->links.next != INVALID_OFFSET)
|
327 | 327 | {
|
328 | 328 | int lockmode = proc->token;
|
| 329 | + LOCK *waitLock = proc->waitLock; |
329 | 330 |
|
330 |
| - Assert(proc->waitLock->waitProcs.size > 0); |
| 331 | + Assert(waitLock); |
| 332 | + Assert(waitLock->waitProcs.size > 0); |
331 | 333 | SHMQueueDelete(&(proc->links));
|
332 |
| - --proc->waitLock->waitProcs.size; |
333 |
| - Assert(proc->waitLock->nHolding > 0); |
334 |
| - Assert(proc->waitLock->nHolding > proc->waitLock->nActive); |
335 |
| - --proc->waitLock->nHolding; |
336 |
| - Assert(proc->waitLock->holders[lockmode] > 0); |
337 |
| - --proc->waitLock->holders[lockmode]; |
338 |
| - if (proc->waitLock->activeHolders[lockmode] == |
339 |
| - proc->waitLock->holders[lockmode]) |
340 |
| - proc->waitLock->waitMask &= ~(1 << lockmode); |
| 334 | + --waitLock->waitProcs.size; |
| 335 | + Assert(waitLock->nHolding > 0); |
| 336 | + Assert(waitLock->nHolding > proc->waitLock->nActive); |
| 337 | + --waitLock->nHolding; |
| 338 | + Assert(waitLock->holders[lockmode] > 0); |
| 339 | + --waitLock->holders[lockmode]; |
| 340 | + if (waitLock->activeHolders[lockmode] == waitLock->holders[lockmode]) |
| 341 | + waitLock->waitMask &= ~(1 << lockmode); |
| 342 | + ProcLockWakeup(&(waitLock->waitProcs), LOCK_LOCKMETHOD(*waitLock), waitLock); |
341 | 343 | getoffed = true;
|
342 | 344 | }
|
343 | 345 | SHMQueueElemInit(&(proc->links));
|
|
0 commit comments