|
7 | 7 | *
|
8 | 8 | *
|
9 | 9 | * IDENTIFICATION
|
10 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.42 1999/02/19 06:06:06 tgl Exp $ |
| 10 | + * $Header: /cvsroot/pgsql/src/backend/storage/lmgr/lock.c,v 1.43 1999/02/21 01:41:46 tgl Exp $ |
11 | 11 | *
|
12 | 12 | * NOTES
|
13 | 13 | * Outside modules can create a lock table and acquire/release
|
@@ -1478,36 +1478,37 @@ LockReleaseAll(LOCKMETHOD lockmethod, SHM_QUEUE *lockQueue)
|
1478 | 1478 | }
|
1479 | 1479 |
|
1480 | 1480 | int
|
1481 |
| -LockShmemSize() |
| 1481 | +LockShmemSize(int maxBackends) |
1482 | 1482 | {
|
1483 | 1483 | int size = 0;
|
| 1484 | + int nLockEnts = NLOCKENTS(maxBackends); |
1484 | 1485 | int nLockBuckets,
|
1485 | 1486 | nLockSegs;
|
1486 | 1487 | int nXidBuckets,
|
1487 | 1488 | nXidSegs;
|
1488 | 1489 |
|
1489 |
| - nLockBuckets = 1 << (int) my_log2((NLOCKENTS - 1) / DEF_FFACTOR + 1); |
| 1490 | + nLockBuckets = 1 << (int) my_log2((nLockEnts - 1) / DEF_FFACTOR + 1); |
1490 | 1491 | nLockSegs = 1 << (int) my_log2((nLockBuckets - 1) / DEF_SEGSIZE + 1);
|
1491 | 1492 |
|
1492 | 1493 | nXidBuckets = 1 << (int) my_log2((NLOCKS_PER_XACT - 1) / DEF_FFACTOR + 1);
|
1493 | 1494 | nXidSegs = 1 << (int) my_log2((nLockBuckets - 1) / DEF_SEGSIZE + 1);
|
1494 | 1495 |
|
1495 |
| - size += MAXALIGN(MAXBACKENDS * sizeof(PROC)); /* each MyProc */ |
1496 |
| - size += MAXALIGN(MAXBACKENDS * sizeof(LOCKMETHODCTL)); /* each |
| 1496 | + size += MAXALIGN(maxBackends * sizeof(PROC)); /* each MyProc */ |
| 1497 | + size += MAXALIGN(maxBackends * sizeof(LOCKMETHODCTL)); /* each |
1497 | 1498 | * lockMethodTable->ctl */
|
1498 | 1499 | size += MAXALIGN(sizeof(PROC_HDR)); /* ProcGlobal */
|
1499 | 1500 |
|
1500 |
| - size += MAXALIGN(my_log2(NLOCKENTS) * sizeof(void *)); |
| 1501 | + size += MAXALIGN(my_log2(nLockEnts) * sizeof(void *)); |
1501 | 1502 | size += MAXALIGN(sizeof(HHDR));
|
1502 | 1503 | size += nLockSegs * MAXALIGN(DEF_SEGSIZE * sizeof(SEGMENT));
|
1503 |
| - size += NLOCKENTS * /* XXX not multiple of BUCKET_ALLOC_INCR? */ |
| 1504 | + size += nLockEnts * /* XXX not multiple of BUCKET_ALLOC_INCR? */ |
1504 | 1505 | (MAXALIGN(sizeof(BUCKET_INDEX)) +
|
1505 | 1506 | MAXALIGN(sizeof(LOCK))); /* contains hash key */
|
1506 | 1507 |
|
1507 |
| - size += MAXALIGN(my_log2(MAXBACKENDS) * sizeof(void *)); |
| 1508 | + size += MAXALIGN(my_log2(maxBackends) * sizeof(void *)); |
1508 | 1509 | size += MAXALIGN(sizeof(HHDR));
|
1509 | 1510 | size += nXidSegs * MAXALIGN(DEF_SEGSIZE * sizeof(SEGMENT));
|
1510 |
| - size += MAXBACKENDS * /* XXX not multiple of BUCKET_ALLOC_INCR? */ |
| 1511 | + size += maxBackends * /* XXX not multiple of BUCKET_ALLOC_INCR? */ |
1511 | 1512 | (MAXALIGN(sizeof(BUCKET_INDEX)) +
|
1512 | 1513 | MAXALIGN(sizeof(XIDLookupEnt))); /* contains hash key */
|
1513 | 1514 |
|
@@ -1673,8 +1674,8 @@ DeadLockCheck(SHM_QUEUE *lockQueue, LOCK *findlock, bool skip_check)
|
1673 | 1674 | break;
|
1674 | 1675 | if (j >= nprocs && lock != findlock)
|
1675 | 1676 | {
|
| 1677 | + Assert(nprocs < MAXBACKENDS); |
1676 | 1678 | checked_procs[nprocs++] = proc;
|
1677 |
| - Assert(nprocs <= MAXBACKENDS); |
1678 | 1679 |
|
1679 | 1680 | /*
|
1680 | 1681 | * For non-MyProc entries, we are looking only
|
|
0 commit comments