|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.52 2000/06/28 03:31:57 tgl Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/storage/ipc/shmem.c,v 1.53 2000/07/25 20:17:02 tgl Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -171,17 +171,18 @@ InitShmem(unsigned int key, unsigned int size)
|
171 | 171 | /* get pointers to the dimensions of shared memory */
|
172 | 172 | ShmemBase= (unsigned long)sharedRegion;
|
173 | 173 | ShmemEnd= (unsigned long)sharedRegion+ShmemSize;
|
174 |
| -currFreeSpace=0; |
175 | 174 |
|
176 |
| -/* First long in shared memory is thecount ofavailablespace */ |
| 175 | +/* First long in shared memory is the available-space pointer */ |
177 | 176 | ShmemFreeStart= (unsigned long*)ShmemBase;
|
178 | 177 | /* next is a shmem pointer to the shmem index */
|
179 | 178 | ShmemIndexOffset=ShmemFreeStart+1;
|
180 | 179 | /* next is ShmemVariableCache */
|
181 | 180 | ShmemVariableCache= (VariableCache) (ShmemIndexOffset+1);
|
182 | 181 |
|
183 |
| -currFreeSpace+=sizeof(ShmemFreeStart)+sizeof(ShmemIndexOffset)+ |
184 |
| -LONGALIGN(sizeof(VariableCacheData)); |
| 182 | +/* here is where to start dynamic allocation */ |
| 183 | +currFreeSpace=MAXALIGN(sizeof(*ShmemFreeStart)+ |
| 184 | +sizeof(*ShmemIndexOffset)+ |
| 185 | +sizeof(*ShmemVariableCache)); |
185 | 186 |
|
186 | 187 | /*
|
187 | 188 | * bootstrap initialize spin locks so we can start to use the
|
@@ -510,7 +511,7 @@ ShmemInitStruct(char *name, Size size, bool *foundPtr)
|
510 | 511 | }
|
511 | 512 | else
|
512 | 513 | {
|
513 |
| -Assert(ShmemIndexOffset); |
| 514 | +Assert(*ShmemIndexOffset); |
514 | 515 |
|
515 | 516 | *foundPtr= TRUE;
|
516 | 517 | return (void*)MAKE_PTR(*ShmemIndexOffset);
|
|