Add pg_atomic_unlocked_write_u64
authorAndres Freund <andres@anarazel.de>
Wed, 3 Dec 2025 23:38:20 +0000 (18:38 -0500)
committerAndres Freund <andres@anarazel.de>
Wed, 3 Dec 2025 23:38:20 +0000 (18:38 -0500)
The 64bit equivalent of pg_atomic_unlocked_write_u32(), to be used in an
upcoming patch converting BufferDesc.state into a 64bit atomic.

Reviewed-by: Melanie Plageman <melanieplageman@gmail.com>
Discussion: https://postgr.es/m/fvfmkr5kk4nyex56ejgxj3uzi63isfxovp2biecb4bspbjrze7@az2pljabhnff

src/include/port/atomics.h
src/include/port/atomics/generic.h

index 96f1858da972240c949a416927f6db51192be5df..830ea5c7c52745e954804e53d6cfb142806d97dc 100644 (file)
@@ -488,6 +488,16 @@ pg_atomic_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
    pg_atomic_write_u64_impl(ptr, val);
 }
 
+static inline void
+pg_atomic_unlocked_write_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
+{
+#ifndef PG_HAVE_ATOMIC_U64_SIMULATION
+   AssertPointerAlignment(ptr, 8);
+#endif
+
+   pg_atomic_unlocked_write_u64_impl(ptr, val);
+}
+
 static inline void
 pg_atomic_write_membarrier_u64(volatile pg_atomic_uint64 *ptr, uint64 val)
 {
index 6b61a7b5416654cbe999027f3c6d8ca627eb3cf5..00aa152f9088a27bd1b5e1eda8ce787fc3a7058e 100644 (file)
@@ -297,6 +297,15 @@ pg_atomic_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val)
 #endif /* PG_HAVE_8BYTE_SINGLE_COPY_ATOMICITY && !PG_HAVE_ATOMIC_U64_SIMULATION */
 #endif /* PG_HAVE_ATOMIC_WRITE_U64 */
 
+#ifndef PG_HAVE_ATOMIC_UNLOCKED_WRITE_U64
+#define PG_HAVE_ATOMIC_UNLOCKED_WRITE_U64
+static inline void
+pg_atomic_unlocked_write_u64_impl(volatile pg_atomic_uint64 *ptr, uint64 val)
+{
+   ptr->value = val;
+}
+#endif
+
 #ifndef PG_HAVE_ATOMIC_READ_U64
 #define PG_HAVE_ATOMIC_READ_U64