From: Andres Freund Date: Wed, 3 Dec 2025 23:38:20 +0000 (-0500) Subject: Add pg_atomic_unlocked_write_u64 X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=7902a47c20b1d5c0b7d20071f9ada6a0185bf39b;p=postgresql.git Add pg_atomic_unlocked_write_u64 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 Discussion: https://postgr.es/m/fvfmkr5kk4nyex56ejgxj3uzi63isfxovp2biecb4bspbjrze7@az2pljabhnff --- diff --git a/src/include/port/atomics.h b/src/include/port/atomics.h index 96f1858da97..830ea5c7c52 100644 --- a/src/include/port/atomics.h +++ b/src/include/port/atomics.h @@ -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) { diff --git a/src/include/port/atomics/generic.h b/src/include/port/atomics/generic.h index 6b61a7b5416..00aa152f908 100644 --- a/src/include/port/atomics/generic.h +++ b/src/include/port/atomics/generic.h @@ -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