41#if defined(USE_NAMED_POSIX_SEMAPHORES) && defined(EXEC_BACKEND)
42#error cannot use named POSIX semaphores with EXEC_BACKEND
57#define PG_SEM_REF(x) (&(x)->sem_padded.pgsem)
59#define IPCProtection (0600)
61#ifdef USE_NAMED_POSIX_SEMAPHORES
74#ifdef USE_NAMED_POSIX_SEMAPHORES
149#ifdef USE_NAMED_POSIX_SEMAPHORES
152 elog(
LOG,
"sem_close failed: %m");
156 elog(
LOG,
"sem_destroy failed: %m");
167#ifdef USE_NAMED_POSIX_SEMAPHORES
211 errmsg(
"could not stat data directory \"%s\": %m",
214#ifdef USE_NAMED_POSIX_SEMAPHORES
237#ifdef USE_NAMED_POSIX_SEMAPHORES
243#ifdef USE_UNNAMED_POSIX_SEMAPHORES
264 elog(
PANIC,
"too many semaphores created");
266#ifdef USE_NAMED_POSIX_SEMAPHORES
#define Assert(condition)
int errcode_for_file_access(void)
#define ereport(elevel,...)
void on_shmem_exit(pg_on_exit_callback function, Datum arg)
#define PG_CACHE_LINE_SIZE
struct PGSemaphoreData * PGSemaphore
void PGSemaphoreUnlock(PGSemaphore sema)
static void PosixSemaphoreKill(sem_t *sem)
struct PGSemaphoreData PGSemaphoreData
void PGSemaphoreShmemRequest(int maxSemas)
void PGSemaphoreReset(PGSemaphore sema)
void PGSemaphoreLock(PGSemaphore sema)
void PGSemaphoreInit(int maxSemas)
bool PGSemaphoreTryLock(PGSemaphore sema)
static PGSemaphore sharedSemas
PGSemaphore PGSemaphoreCreate(void)
static void ReleaseSemaphores(int status, Datum arg)
static void PosixSemaphoreCreate(sem_t *sem)
Size mul_size(Size s1, Size s2)
#define ShmemRequestStruct(...)
char pad[PG_CACHE_LINE_SIZE]