diff --git a/src/backend/storage/ipc/ipc.c b/src/backend/storage/ipc/ipc.c index ad351542347ff63d2df691776c10aa2fcde04165..10d3d6e7edb9e8f73811090ab0e729915aa20ee5 100644 --- a/src/backend/storage/ipc/ipc.c +++ b/src/backend/storage/ipc/ipc.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.77 2002/03/06 06:10:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/storage/ipc/ipc.c,v 1.78 2002/04/13 19:52:51 momjian Exp $ * * NOTES * @@ -632,7 +632,12 @@ InternalIpcMemoryCreate(IpcMemoryKey memKey, uint32 size, int permission) on_shmem_exit(IpcMemoryDelete, Int32GetDatum(shmid)); /* OK, should be able to attach to the segment */ - memAddress = shmat(shmid, 0, 0); +#if defined(solaris) && defined(__sparc__) + /* use intimate shared memory on SPARC Solaris */ + memAddress = shmat(shmid, 0, SHM_SHARE_MMU); +#else + memAddress = shmat(shmid, 0, 0); +#endif if (memAddress == (void *) -1) { @@ -812,7 +817,14 @@ IpcMemoryCreate(uint32 size, bool makePrivate, int permission) shmid = shmget(NextShmemSegID, sizeof(PGShmemHeader), 0); if (shmid < 0) continue; /* failed: must be some other app's */ - memAddress = shmat(shmid, 0, 0); + +#if defined(solaris) && defined(__sparc__) + /* use intimate shared memory on SPARC Solaris */ + memAddress = shmat(shmid, 0, SHM_SHARE_MMU); +#else + memAddress = shmat(shmid, 0, 0); +#endif + if (memAddress == (void *) -1) continue; /* failed: must be some other app's */ hdr = (PGShmemHeader *) memAddress;