From d2aecaea15556f9986759f3455609bcafb0a3992 Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Mon, 28 Oct 2013 12:12:06 -0400 Subject: [PATCH] Modify dynamic shared memory code to use Size rather than uint64. This is more consistent with what we do elsewhere. --- src/backend/storage/ipc/dsm.c | 22 +++++++-------- src/backend/storage/ipc/dsm_impl.c | 43 +++++++++++++----------------- src/include/storage/dsm.h | 6 ++--- src/include/storage/dsm_impl.h | 4 +-- 4 files changed, 35 insertions(+), 40 deletions(-) diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c index e516197bd48..4d7fb08ca09 100644 --- a/src/backend/storage/ipc/dsm.c +++ b/src/backend/storage/ipc/dsm.c @@ -67,7 +67,7 @@ struct dsm_segment uint32 control_slot; /* Slot in control segment. */ void *impl_private; /* Implementation-specific private data. */ void *mapped_address; /* Mapping address, or NULL if unmapped. */ - uint64 mapped_size; /* Size of our mapping. */ + Size mapped_size; /* Size of our mapping. */ }; /* Shared-memory state for a dynamic shared memory segment. */ @@ -94,7 +94,7 @@ static void dsm_postmaster_shutdown(int code, Datum arg); static void dsm_backend_shutdown(int code, Datum arg); static dsm_segment *dsm_create_descriptor(void); static bool dsm_control_segment_sane(dsm_control_header *control, - uint64 mapped_size); + Size mapped_size); static uint64 dsm_control_bytes_needed(uint32 nitems); /* Has this backend initialized the dynamic shared memory system yet? */ @@ -128,7 +128,7 @@ static dlist_head dsm_segment_list = DLIST_STATIC_INIT(dsm_segment_list); */ static dsm_handle dsm_control_handle; static dsm_control_header *dsm_control; -static uint64 dsm_control_mapped_size = 0; +static Size dsm_control_mapped_size = 0; static void *dsm_control_impl_private = NULL; /* @@ -142,7 +142,7 @@ dsm_postmaster_startup(void) { void *dsm_control_address = NULL; uint32 maxitems; - uint64 segsize; + Size segsize; Assert(!IsUnderPostmaster); @@ -214,8 +214,8 @@ dsm_cleanup_using_control_segment(void) void *junk_mapped_address = NULL; void *impl_private = NULL; void *junk_impl_private = NULL; - uint64 mapped_size = 0; - uint64 junk_mapped_size = 0; + Size mapped_size = 0; + Size junk_mapped_size = 0; uint32 nitems; uint32 i; dsm_handle old_control_handle; @@ -453,7 +453,7 @@ dsm_postmaster_shutdown(int code, Datum arg) void *dsm_control_address; void *junk_mapped_address = NULL; void *junk_impl_private = NULL; - uint64 junk_mapped_size = 0; + Size junk_mapped_size = 0; /* * If some other backend exited uncleanly, it might have corrupted the @@ -562,7 +562,7 @@ dsm_backend_startup(void) * Create a new dynamic shared memory segment. */ dsm_segment * -dsm_create(uint64 size) +dsm_create(Size size) { dsm_segment *seg = dsm_create_descriptor(); uint32 i; @@ -733,7 +733,7 @@ dsm_backend_shutdown(int code, Datum arg) * address. For the caller's convenience, we return the mapped address. */ void * -dsm_resize(dsm_segment *seg, uint64 size) +dsm_resize(dsm_segment *seg, Size size) { Assert(seg->control_slot != INVALID_CONTROL_SLOT); dsm_impl_op(DSM_OP_RESIZE, seg->handle, size, &seg->impl_private, @@ -887,7 +887,7 @@ dsm_segment_address(dsm_segment *seg) /* * Get the size of a mapping. */ -uint64 +Size dsm_segment_map_length(dsm_segment *seg) { Assert(seg->mapped_address != NULL); @@ -947,7 +947,7 @@ dsm_create_descriptor(void) * our segments at all. */ static bool -dsm_control_segment_sane(dsm_control_header *control, uint64 mapped_size) +dsm_control_segment_sane(dsm_control_header *control, Size mapped_size) { if (mapped_size < offsetof(dsm_control_header, item)) return false; /* Mapped size too short to read header. */ diff --git a/src/backend/storage/ipc/dsm_impl.c b/src/backend/storage/ipc/dsm_impl.c index 627f00b7fd9..2056668ae99 100644 --- a/src/backend/storage/ipc/dsm_impl.c +++ b/src/backend/storage/ipc/dsm_impl.c @@ -69,24 +69,24 @@ #include "utils/memutils.h" #ifdef USE_DSM_POSIX -static bool dsm_impl_posix(dsm_op op, dsm_handle handle, uint64 request_size, +static bool dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, - uint64 *mapped_size, int elevel); + Size *mapped_size, int elevel); #endif #ifdef USE_DSM_SYSV -static bool dsm_impl_sysv(dsm_op op, dsm_handle handle, uint64 request_size, +static bool dsm_impl_sysv(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, - uint64 *mapped_size, int elevel); + Size *mapped_size, int elevel); #endif #ifdef USE_DSM_WINDOWS -static bool dsm_impl_windows(dsm_op op, dsm_handle handle, uint64 request_size, +static bool dsm_impl_windows(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, - uint64 *mapped_size, int elevel); + Size *mapped_size, int elevel); #endif #ifdef USE_DSM_MMAP -static bool dsm_impl_mmap(dsm_op op, dsm_handle handle, uint64 request_size, +static bool dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, - uint64 *mapped_size, int elevel); + Size *mapped_size, int elevel); #endif static int errcode_for_dynamic_shared_memory(void); @@ -156,19 +156,14 @@ int dynamic_shared_memory_type; *----- */ bool -dsm_impl_op(dsm_op op, dsm_handle handle, uint64 request_size, - void **impl_private, void **mapped_address, uint64 *mapped_size, +dsm_impl_op(dsm_op op, dsm_handle handle, Size request_size, + void **impl_private, void **mapped_address, Size *mapped_size, int elevel) { Assert(op == DSM_OP_CREATE || op == DSM_OP_RESIZE || request_size == 0); Assert((op != DSM_OP_CREATE && op != DSM_OP_ATTACH) || (*mapped_address == NULL && *mapped_size == 0)); - if (request_size > (size_t) -1) - ereport(ERROR, - (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), - errmsg("requested shared memory size overflows size_t"))); - switch (dynamic_shared_memory_type) { #ifdef USE_DSM_POSIX @@ -241,8 +236,8 @@ dsm_impl_can_resize(void) * a different shared memory implementation. */ static bool -dsm_impl_posix(dsm_op op, dsm_handle handle, uint64 request_size, - void **impl_private, void **mapped_address, uint64 *mapped_size, +dsm_impl_posix(dsm_op op, dsm_handle handle, Size request_size, + void **impl_private, void **mapped_address, Size *mapped_size, int elevel) { char name[64]; @@ -407,8 +402,8 @@ dsm_impl_posix(dsm_op op, dsm_handle handle, uint64 request_size, * those are not supported everywhere. */ static bool -dsm_impl_sysv(dsm_op op, dsm_handle handle, uint64 request_size, - void **impl_private, void **mapped_address, uint64 *mapped_size, +dsm_impl_sysv(dsm_op op, dsm_handle handle, Size request_size, + void **impl_private, void **mapped_address, Size *mapped_size, int elevel) { key_t key; @@ -612,9 +607,9 @@ dsm_impl_sysv(dsm_op op, dsm_handle handle, uint64 request_size, * when the process containing the reference exits. */ static bool -dsm_impl_windows(dsm_op op, dsm_handle handle, uint64 request_size, +dsm_impl_windows(dsm_op op, dsm_handle handle, Size request_size, void **impl_private, void **mapped_address, - uint64 *mapped_size, int elevel) + Size *mapped_size, int elevel) { char *address; HANDLE hmap; @@ -780,8 +775,8 @@ dsm_impl_windows(dsm_op op, dsm_handle handle, uint64 request_size, * directory to a ramdisk to avoid this problem, if available. */ static bool -dsm_impl_mmap(dsm_op op, dsm_handle handle, uint64 request_size, - void **impl_private, void **mapped_address, uint64 *mapped_size, +dsm_impl_mmap(dsm_op op, dsm_handle handle, Size request_size, + void **impl_private, void **mapped_address, Size *mapped_size, int elevel) { char name[64]; @@ -892,7 +887,7 @@ dsm_impl_mmap(dsm_op op, dsm_handle handle, uint64 request_size, */ while (success && remaining > 0) { - uint64 goal = remaining; + Size goal = remaining; if (goal > ZBUFFER_SIZE) goal = ZBUFFER_SIZE; diff --git a/src/include/storage/dsm.h b/src/include/storage/dsm.h index 2b5e7227a0e..d906eba1591 100644 --- a/src/include/storage/dsm.h +++ b/src/include/storage/dsm.h @@ -21,9 +21,9 @@ typedef struct dsm_segment dsm_segment; extern void dsm_postmaster_startup(void); /* Functions that create, update, or remove mappings. */ -extern dsm_segment *dsm_create(uint64 size); +extern dsm_segment *dsm_create(Size size); extern dsm_segment *dsm_attach(dsm_handle h); -extern void *dsm_resize(dsm_segment *seg, uint64 size); +extern void *dsm_resize(dsm_segment *seg, Size size); extern void *dsm_remap(dsm_segment *seg); extern void dsm_detach(dsm_segment *seg); @@ -33,7 +33,7 @@ extern dsm_segment *dsm_find_mapping(dsm_handle h); /* Informational functions. */ extern void *dsm_segment_address(dsm_segment *seg); -extern uint64 dsm_segment_map_length(dsm_segment *seg); +extern Size dsm_segment_map_length(dsm_segment *seg); extern dsm_handle dsm_segment_handle(dsm_segment *seg); #endif /* DSM_H */ diff --git a/src/include/storage/dsm_impl.h b/src/include/storage/dsm_impl.h index 13f1f48b237..52d85624972 100644 --- a/src/include/storage/dsm_impl.h +++ b/src/include/storage/dsm_impl.h @@ -65,8 +65,8 @@ typedef enum } dsm_op; /* Create, attach to, detach from, resize, or destroy a segment. */ -extern bool dsm_impl_op(dsm_op op, dsm_handle handle, uint64 request_size, - void **impl_private, void **mapped_address, uint64 *mapped_size, +extern bool dsm_impl_op(dsm_op op, dsm_handle handle, Size request_size, + void **impl_private, void **mapped_address, Size *mapped_size, int elevel); /* Some implementations cannot resize segments. Can this one? */ -- 2.30.2