75 void **impl_private,
void **mapped_address,
76 Size *mapped_size,
int elevel);
81 void **impl_private,
void **mapped_address,
82 Size *mapped_size,
int elevel);
86 void **impl_private,
void **mapped_address,
87 Size *mapped_size,
int elevel);
91 void **impl_private,
void **mapped_address,
92 Size *mapped_size,
int elevel);
103#ifdef USE_DSM_WINDOWS
119#define ZBUFFER_SIZE 8192
121#define SEGMENT_NAME_PREFIX "Global/PostgreSQL"
161 void **impl_private,
void **mapped_address,
Size *mapped_size,
166 (*mapped_address ==
NULL && *mapped_size == 0));
173 mapped_address, mapped_size, elevel);
178 mapped_address, mapped_size, elevel);
180#ifdef USE_DSM_WINDOWS
183 mapped_address, mapped_size, elevel);
188 mapped_address, mapped_size, elevel);
191 elog(
ERROR,
"unexpected dynamic shared memory type: %d",
214 void **impl_private,
void **mapped_address,
Size *mapped_size,
227 if (*mapped_address !=
NULL
228 &&
munmap(*mapped_address, *mapped_size) != 0)
232 errmsg(
"could not unmap shared memory segment \"%s\": %m",
236 *mapped_address =
NULL;
242 errmsg(
"could not remove shared memory segment \"%s\": %m",
266 errmsg(
"could not open shared memory segment \"%s\": %m",
291 errmsg(
"could not stat shared memory segment \"%s\": %m",
310 errmsg(
"could not resize shared memory segment \"%s\" to %zu bytes: %m",
332 errmsg(
"could not map shared memory segment \"%s\": %m",
336 *mapped_address = address;
368#if defined(HAVE_POSIX_FALLOCATE) && defined(__linux__)
385 }
while (rc ==
EINTR);
425 void **impl_private,
void **mapped_address,
Size *mapped_size,
457 key = (
key_t) handle;
471 elog(
DEBUG4,
"System V shared memory key may not be IPC_PRIVATE");
481 if (*impl_private !=
NULL)
520 errmsg(
"could not get shared memory segment: %m")));
533 *impl_private =
NULL;
534 if (*mapped_address !=
NULL &&
shmdt(*mapped_address) != 0)
538 errmsg(
"could not unmap shared memory segment \"%s\": %m",
542 *mapped_address =
NULL;
548 errmsg(
"could not remove shared memory segment \"%s\": %m",
564 errmsg(
"could not stat shared memory segment \"%s\": %m",
573 if (address == (
void *) -1)
585 errmsg(
"could not map shared memory segment \"%s\": %m",
589 *mapped_address = address;
596#ifdef USE_DSM_WINDOWS
612 void **impl_private,
void **mapped_address,
613 Size *mapped_size,
int elevel)
636 if (*mapped_address !=
NULL
642 errmsg(
"could not unmap shared memory segment \"%s\": %m",
646 if (*impl_private !=
NULL
652 errmsg(
"could not remove shared memory segment \"%s\": %m",
657 *impl_private =
NULL;
658 *mapped_address =
NULL;
708 errmsg(
"could not create shared memory segment \"%s\": %m",
723 errmsg(
"could not open shared memory segment \"%s\": %m",
744 errmsg(
"could not map shared memory segment \"%s\": %m",
768 errmsg(
"could not stat shared memory segment \"%s\": %m",
773 *mapped_address = address;
774 *mapped_size = info.RegionSize;
775 *impl_private =
hmap;
794 void **impl_private,
void **mapped_address,
Size *mapped_size,
808 if (*mapped_address !=
NULL
809 &&
munmap(*mapped_address, *mapped_size) != 0)
813 errmsg(
"could not unmap shared memory segment \"%s\": %m",
817 *mapped_address =
NULL;
823 errmsg(
"could not remove shared memory segment \"%s\": %m",
837 errmsg(
"could not open shared memory segment \"%s\": %m",
861 errmsg(
"could not stat shared memory segment \"%s\": %m",
912 errmsg(
"could not resize shared memory segment \"%s\" to %zu bytes: %m",
934 errmsg(
"could not map shared memory segment \"%s\": %m",
938 *mapped_address = address;
945 errmsg(
"could not close shared memory segment \"%s\": %m",
965 void **impl_private_pm_handle)
969#ifdef USE_DSM_WINDOWS
985 errmsg(
"could not duplicate handle for \"%s\": %m",
996 *impl_private_pm_handle =
hmap;
1019#ifdef USE_DSM_WINDOWS
1023 if (*impl_private &&
1034 errmsg(
"could not duplicate handle for \"%s\": %m",
1038 *impl_private =
NULL;
#define Assert(condition)
void dsm_impl_pin_segment(dsm_handle handle, void *impl_private, void **impl_private_pm_handle)
int min_dynamic_shared_memory
static int errcode_for_dynamic_shared_memory(void)
#define SEGMENT_NAME_PREFIX
void dsm_impl_unpin_segment(dsm_handle handle, void **impl_private)
static int dsm_impl_posix_resize(int fd, off_t size)
bool dsm_impl_op(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel)
int dynamic_shared_memory_type
static bool dsm_impl_sysv(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel)
const struct config_enum_entry dynamic_shared_memory_options[]
static bool dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel)
static bool dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, Size *mapped_size, int elevel)
#define DEFAULT_DYNAMIC_SHARED_MEMORY_TYPE
#define PG_DYNSHMEM_MMAP_FILE_PREFIX
int errcode_for_file_access(void)
int errcode(int sqlerrcode)
#define ereport(elevel,...)
int CloseTransientFile(int fd)
void ReleaseExternalFD(void)
void ReserveExternalFD(void)
int OpenTransientFile(const char *fileName, int fileFlags)
#define PG_FILE_MODE_OWNER
void * MemoryContextAlloc(MemoryContext context, Size size)
void pfree(void *pointer)
void * palloc0(Size size)
MemoryContext TopMemoryContext
static int fd(const char *x, int i)
static void pgstat_report_wait_start(uint32 wait_event_info)
static void pgstat_report_wait_end(void)
void _dosmaperr(unsigned long)