diff options
Diffstat (limited to 'src/backend/storage/ipc/shmem.c')
-rw-r--r-- | src/backend/storage/ipc/shmem.c | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/backend/storage/ipc/shmem.c b/src/backend/storage/ipc/shmem.c index 831a4add7df..67e8d378c8f 100644 --- a/src/backend/storage/ipc/shmem.c +++ b/src/backend/storage/ipc/shmem.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/ipc/shmem.c,v 1.100 2008/01/01 19:45:51 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/storage/ipc/shmem.c,v 1.101 2008/11/02 21:24:52 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -77,9 +77,9 @@ static PGShmemHeader *ShmemSegHdr; /* shared mem segment header */ -SHMEM_OFFSET ShmemBase; /* start address of shared memory */ +static void *ShmemBase; /* start address of shared memory */ -static SHMEM_OFFSET ShmemEnd; /* end+1 address of shared memory */ +static void *ShmemEnd; /* end+1 address of shared memory */ slock_t *ShmemLock; /* spinlock for shared memory and LWLock * allocation */ @@ -99,8 +99,8 @@ InitShmemAccess(void *seghdr) PGShmemHeader *shmhdr = (PGShmemHeader *) seghdr; ShmemSegHdr = shmhdr; - ShmemBase = (SHMEM_OFFSET) shmhdr; - ShmemEnd = ShmemBase + shmhdr->totalsize; + ShmemBase = (void *) shmhdr; + ShmemEnd = (char *) ShmemBase + shmhdr->totalsize; } /* @@ -127,7 +127,7 @@ InitShmemAllocation(void) SpinLockInit(ShmemLock); /* ShmemIndex can't be set up yet (need LWLocks first) */ - shmhdr->indexoffset = 0; + shmhdr->index = NULL; ShmemIndex = (HTAB *) NULL; /* @@ -176,7 +176,7 @@ ShmemAlloc(Size size) newFree = newStart + size; if (newFree <= shmemseghdr->totalsize) { - newSpace = (void *) MAKE_PTR(newStart); + newSpace = (void *) ((char *) ShmemBase + newStart); shmemseghdr->freeoffset = newFree; } else @@ -193,14 +193,14 @@ ShmemAlloc(Size size) } /* - * ShmemIsValid -- test if an offset refers to valid shared memory + * ShmemAddrIsValid -- test if an address refers to shared memory * - * Returns TRUE if the pointer is valid. + * Returns TRUE if the pointer points within the shared memory segment. */ bool -ShmemIsValid(unsigned long addr) +ShmemAddrIsValid(void *addr) { - return (addr < ShmemEnd) && (addr >= ShmemBase); + return (addr >= ShmemBase) && (addr < ShmemEnd); } /* @@ -324,8 +324,8 @@ ShmemInitStruct(const char *name, Size size, bool *foundPtr) if (IsUnderPostmaster) { /* Must be initializing a (non-standalone) backend */ - Assert(shmemseghdr->indexoffset != 0); - structPtr = (void *) MAKE_PTR(shmemseghdr->indexoffset); + Assert(shmemseghdr->index != NULL); + structPtr = shmemseghdr->index; *foundPtr = TRUE; } else @@ -338,9 +338,9 @@ ShmemInitStruct(const char *name, Size size, bool *foundPtr) * index has been initialized. This should be OK because no other * process can be accessing shared memory yet. */ - Assert(shmemseghdr->indexoffset == 0); + Assert(shmemseghdr->index == NULL); structPtr = ShmemAlloc(size); - shmemseghdr->indexoffset = MAKE_OFFSET(structPtr); + shmemseghdr->index = structPtr; *foundPtr = FALSE; } LWLockRelease(ShmemIndexLock); @@ -374,7 +374,7 @@ ShmemInitStruct(const char *name, Size size, bool *foundPtr) /* let caller print its message too */ return NULL; } - structPtr = (void *) MAKE_PTR(result->location); + structPtr = result->location; } else { @@ -395,9 +395,9 @@ ShmemInitStruct(const char *name, Size size, bool *foundPtr) return NULL; } result->size = size; - result->location = MAKE_OFFSET(structPtr); + result->location = structPtr; } - Assert(ShmemIsValid((unsigned long) structPtr)); + Assert(ShmemAddrIsValid(structPtr)); LWLockRelease(ShmemIndexLock); return structPtr; |