aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/replication/logical/launcher.c8
-rw-r--r--src/backend/storage/ipc/dsm.c5
-rw-r--r--src/backend/utils/mmgr/dsa.c4
-rw-r--r--src/include/lib/dshash.h3
-rw-r--r--src/include/storage/dsm.h3
-rw-r--r--src/include/storage/dsm_impl.h3
-rw-r--r--src/include/utils/dsa.h4
7 files changed, 18 insertions, 12 deletions
diff --git a/src/backend/replication/logical/launcher.c b/src/backend/replication/logical/launcher.c
index 564bffe5caf..970d170e73a 100644
--- a/src/backend/replication/logical/launcher.c
+++ b/src/backend/replication/logical/launcher.c
@@ -922,8 +922,8 @@ ApplyLauncherShmemInit(void)
memset(LogicalRepCtx, 0, ApplyLauncherShmemSize());
- LogicalRepCtx->last_start_dsa = DSM_HANDLE_INVALID;
- LogicalRepCtx->last_start_dsh = DSM_HANDLE_INVALID;
+ LogicalRepCtx->last_start_dsa = DSA_HANDLE_INVALID;
+ LogicalRepCtx->last_start_dsh = DSHASH_HANDLE_INVALID;
/* Initialize memory and spin locks for each worker slot. */
for (slot = 0; slot < max_logical_replication_workers; slot++)
@@ -947,7 +947,7 @@ logicalrep_launcher_attach_dshmem(void)
MemoryContext oldcontext;
/* Quick exit if we already did this. */
- if (LogicalRepCtx->last_start_dsh != DSM_HANDLE_INVALID &&
+ if (LogicalRepCtx->last_start_dsh != DSHASH_HANDLE_INVALID &&
last_start_times != NULL)
return;
@@ -957,7 +957,7 @@ logicalrep_launcher_attach_dshmem(void)
/* Be sure any local memory allocated by DSA routines is persistent. */
oldcontext = MemoryContextSwitchTo(TopMemoryContext);
- if (LogicalRepCtx->last_start_dsh == DSM_HANDLE_INVALID)
+ if (LogicalRepCtx->last_start_dsh == DSHASH_HANDLE_INVALID)
{
/* Initialize dynamic shared hash table for last-start times. */
last_start_times_dsa = dsa_create(LWTRANCHE_LAUNCHER_DSA);
diff --git a/src/backend/storage/ipc/dsm.c b/src/backend/storage/ipc/dsm.c
index ba3ceb8153e..10b029bb162 100644
--- a/src/backend/storage/ipc/dsm.c
+++ b/src/backend/storage/ipc/dsm.c
@@ -173,9 +173,8 @@ dsm_postmaster_startup(PGShmemHeader *shim)
/*
* Loop until we find an unused identifier for the new control segment. We
- * sometimes use 0 as a sentinel value indicating that no control segment
- * is known to exist, so avoid using that value for a real control
- * segment.
+ * sometimes use DSM_HANDLE_INVALID as a sentinel value indicating "no
+ * control segment", so avoid generating that value for a real handle.
*/
for (;;)
{
diff --git a/src/backend/utils/mmgr/dsa.c b/src/backend/utils/mmgr/dsa.c
index 604b702a91f..f5a62061a3e 100644
--- a/src/backend/utils/mmgr/dsa.c
+++ b/src/backend/utils/mmgr/dsa.c
@@ -505,7 +505,7 @@ dsa_create_in_place(void *place, size_t size,
dsa_handle
dsa_get_handle(dsa_area *area)
{
- Assert(area->control->handle != DSM_HANDLE_INVALID);
+ Assert(area->control->handle != DSA_HANDLE_INVALID);
return area->control->handle;
}
@@ -554,7 +554,7 @@ dsa_attach_in_place(void *place, dsm_segment *segment)
{
dsa_area *area;
- area = attach_internal(place, NULL, DSM_HANDLE_INVALID);
+ area = attach_internal(place, NULL, DSA_HANDLE_INVALID);
/*
* Clean up when the control segment detaches, if a containing DSM segment
diff --git a/src/include/lib/dshash.h b/src/include/lib/dshash.h
index 152927742e8..ece55521226 100644
--- a/src/include/lib/dshash.h
+++ b/src/include/lib/dshash.h
@@ -23,6 +23,9 @@ typedef struct dshash_table dshash_table;
/* A handle for a dshash_table which can be shared with other processes. */
typedef dsa_pointer dshash_table_handle;
+/* Sentinel value to use for invalid dshash_table handles. */
+#define DSHASH_HANDLE_INVALID ((dshash_table_handle) InvalidDsaPointer)
+
/* The type for hash values. */
typedef uint32 dshash_hash;
diff --git a/src/include/storage/dsm.h b/src/include/storage/dsm.h
index d84d835d843..858bbf61c28 100644
--- a/src/include/storage/dsm.h
+++ b/src/include/storage/dsm.h
@@ -19,9 +19,6 @@ typedef struct dsm_segment dsm_segment;
#define DSM_CREATE_NULL_IF_MAXSEGMENTS 0x0001
-/* A sentinel value for an invalid DSM handle. */
-#define DSM_HANDLE_INVALID 0
-
/* Startup and shutdown functions. */
struct PGShmemHeader; /* avoid including pg_shmem.h */
extern void dsm_cleanup_using_control_segment(dsm_handle old_control_handle);
diff --git a/src/include/storage/dsm_impl.h b/src/include/storage/dsm_impl.h
index fade3a36687..daf07bd19cd 100644
--- a/src/include/storage/dsm_impl.h
+++ b/src/include/storage/dsm_impl.h
@@ -54,6 +54,9 @@ extern PGDLLIMPORT int min_dynamic_shared_memory;
/* A "name" for a dynamic shared memory segment. */
typedef uint32 dsm_handle;
+/* Sentinel value to use for invalid DSM handles. */
+#define DSM_HANDLE_INVALID ((dsm_handle) 0)
+
/* All the shared-memory operations we know about. */
typedef enum
{
diff --git a/src/include/utils/dsa.h b/src/include/utils/dsa.h
index 104386e6740..3ce4ee300a5 100644
--- a/src/include/utils/dsa.h
+++ b/src/include/utils/dsa.h
@@ -99,6 +99,10 @@ typedef pg_atomic_uint64 dsa_pointer_atomic;
*/
typedef dsm_handle dsa_handle;
+/* Sentinel value to use for invalid dsa_handles. */
+#define DSA_HANDLE_INVALID ((dsa_handle) DSM_HANDLE_INVALID)
+
+
extern dsa_area *dsa_create(int tranche_id);
extern dsa_area *dsa_create_in_place(void *place, size_t size,
int tranche_id, dsm_segment *segment);