/*------------------------------------------------------------------------- * * mem.h * portability definitions for various memory operations * * Copyright (c) 2001-2021, PostgreSQL Global Development Group * * src/include/portability/mem.h * *------------------------------------------------------------------------- */ #ifndef MEM_H #define MEM_H #define IPCProtection (0600) /* access/modify by user only */ #ifdef SHM_SHARE_MMU /* use intimate shared memory on Solaris */ #define PG_SHMAT_FLAGS SHM_SHARE_MMU #else #define PG_SHMAT_FLAGS 0 #endif /* Linux prefers MAP_ANONYMOUS, but the flag is called MAP_ANON on other systems. */ #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif /* BSD-derived systems have MAP_HASSEMAPHORE, but it's not present (or needed) on Linux. */ #ifndef MAP_HASSEMAPHORE #define MAP_HASSEMAPHORE 0 #endif /* * BSD-derived systems use the MAP_NOSYNC flag to prevent dirty mmap(2) * pages from being gratuitously flushed to disk. */ #ifndef MAP_NOSYNC #define MAP_NOSYNC 0 #endif #define PG_MMAP_FLAGS (MAP_SHARED|MAP_ANONYMOUS|MAP_HASSEMAPHORE) /* Some really old systems don't define MAP_FAILED. */ #ifndef MAP_FAILED #define MAP_FAILED ((void *) -1) #endif #endif /* MEM_H */