agora inbox for [email protected]
help / color / mirror / Atom feedRe: Avoiding hash join batch explosions with extreme skew and weird stats
1074+ messages / 3 participants
[nested] [flat]
* Re: Avoiding hash join batch explosions with extreme skew and weird stats
@ 2019-06-06 23:37 Melanie Plageman <[email protected]>
2019-06-07 14:05 ` Re: Avoiding hash join batch explosions with extreme skew and weird stats Tomas Vondra <[email protected]>
0 siblings, 1 reply; 1074+ messages in thread
From: Melanie Plageman @ 2019-06-06 23:37 UTC (permalink / raw)
To: Thomas Munro <[email protected]>; +Cc: Tomas Vondra <[email protected]>; pgsql-hackers
On Thu, May 16, 2019 at 3:22 PM Thomas Munro <[email protected]> wrote:
> Admittedly I don't have a patch, just a bunch of handwaving. One
> reason I haven't attempted to write it is because although I know how
> to do the non-parallel version using a BufFile full of match bits in
> sync with the tuples for outer joins, I haven't figured out how to do
> it for parallel-aware hash join, because then each loop over the outer
> batch could see different tuples in each participant. You could use
> the match bit in HashJoinTuple header, but then you'd have to write
> all the tuples out again, which is more IO than I want to do. I'll
> probably start another thread about that.
>
>
Going back to the idea of using the match bit in the HashJoinTuple header
and writing out all of the outer side for every chunk of the inner
side, I was wondering if there was something we could do that was kind
of like mmap'ing the outer side file to give the workers in parallel
hashjoin the ability to update a match bit in the tuple in place and
avoid writing the whole outer side out each time.
--
Melanie Plageman
^ permalink raw reply [nested|flat] 1074+ messages in thread
* Re: Avoiding hash join batch explosions with extreme skew and weird stats
2019-06-06 23:37 Re: Avoiding hash join batch explosions with extreme skew and weird stats Melanie Plageman <[email protected]>
@ 2019-06-07 14:05 ` Tomas Vondra <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Tomas Vondra @ 2019-06-07 14:05 UTC (permalink / raw)
To: Melanie Plageman <[email protected]>; +Cc: Thomas Munro <[email protected]>; pgsql-hackers
On Thu, Jun 06, 2019 at 04:37:19PM -0700, Melanie Plageman wrote:
>On Thu, May 16, 2019 at 3:22 PM Thomas Munro <[email protected]> wrote:
>
>> Admittedly I don't have a patch, just a bunch of handwaving. One
>> reason I haven't attempted to write it is because although I know how
>> to do the non-parallel version using a BufFile full of match bits in
>> sync with the tuples for outer joins, I haven't figured out how to do
>> it for parallel-aware hash join, because then each loop over the outer
>> batch could see different tuples in each participant. You could use
>> the match bit in HashJoinTuple header, but then you'd have to write
>> all the tuples out again, which is more IO than I want to do. I'll
>> probably start another thread about that.
>>
>>
>Going back to the idea of using the match bit in the HashJoinTuple header
>and writing out all of the outer side for every chunk of the inner
>side, I was wondering if there was something we could do that was kind
>of like mmap'ing the outer side file to give the workers in parallel
>hashjoin the ability to update a match bit in the tuple in place and
>avoid writing the whole outer side out each time.
>
I think this was one of the things we discussed in Ottawa - we could pass
index of the tuple (in the batch) along with the tuple, so that each
worker know which bit to set.
regards
--
Tomas Vondra http://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v5 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--EzTP03ol5OjsRjZr
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v5-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v1 2/2] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--T3UIK4uPypqlnd5v--
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v4 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--JmXY/Yn6swRVDyih
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v4-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
* [PATCH v3 2/3] Remove HAS_TEST_AND_SET.
@ 2026-05-04 21:24 Nathan Bossart <[email protected]>
0 siblings, 0 replies; 1074+ messages in thread
From: Nathan Bossart @ 2026-05-04 21:24 UTC (permalink / raw)
This is only set when TAS is defined, so we can just check whether
TAS is defined directly instead.
---
src/include/storage/s_lock.h | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index dcfec8ce2af..fb872edd2f0 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -124,7 +124,6 @@
#ifdef __i386__ /* 32-bit i386 */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -194,7 +193,6 @@ spin_delay(void)
#ifdef __x86_64__ /* AMD Opteron, Intel EM64T */
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -249,7 +247,6 @@ spin_delay(void)
*/
#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
#ifdef HAVE_GCC__SYNC_INT32_TAS
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -292,7 +289,6 @@ spin_delay(void)
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
#if defined(__s390__) || defined(__s390x__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -321,7 +317,6 @@ tas(volatile slock_t *lock)
* acquire/release semantics. The CPU will treat superfluous members as
* NOPs, so it's just code space.
*/
-#define HAS_TEST_AND_SET
typedef unsigned char slock_t;
@@ -392,7 +387,6 @@ do \
/* PowerPC */
#if defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__) || defined(__powerpc64__)
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -453,7 +447,6 @@ do \
#if defined(__mips__) && !defined(__sgi) /* non-SGI MIPS */
-#define HAS_TEST_AND_SET
typedef unsigned int slock_t;
@@ -531,10 +524,9 @@ do \
* grounds that that's known to be more likely to work in the ARM ecosystem.
* (But we dealt with ARM above.)
*/
-#if !defined(HAS_TEST_AND_SET)
+#if !defined(TAS)
#if defined(HAVE_GCC__SYNC_INT32_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -549,7 +541,6 @@ tas(volatile slock_t *lock)
#define S_UNLOCK(lock) __sync_lock_release(lock)
#elif defined(HAVE_GCC__SYNC_CHAR_TAS)
-#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -565,7 +556,7 @@ tas(volatile slock_t *lock)
#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/*
@@ -592,12 +583,11 @@ tas(volatile slock_t *lock)
* ---------------------------------------------------------------------
*/
-#if !defined(HAS_TEST_AND_SET) /* We didn't trigger above, let's try here */
+#if !defined(TAS) /* We didn't trigger above, let's try here */
#ifdef _MSC_VER
typedef LONG slock_t;
-#define HAS_TEST_AND_SET
#define TAS(lock) (InterlockedCompareExchange(lock, 1, 0))
#define SPIN_DELAY() spin_delay()
@@ -649,11 +639,11 @@ spin_delay(void)
#endif
-#endif /* !defined(HAS_TEST_AND_SET) */
+#endif /* !defined(TAS) */
/* Blow up if we didn't have any way to do spinlocks */
-#ifndef HAS_TEST_AND_SET
+#ifndef TAS
#error PostgreSQL does not have spinlock support on this platform. Please report this to [email protected].
#endif
--
2.50.1 (Apple Git-155)
--IHFkEDr8CkxIje3R
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment;
filename=v3-0003-Better-express-platform-requirements-in-s_lock.h.patch
^ permalink raw reply [nested|flat] 1074+ messages in thread
end of thread, other threads:[~2026-05-04 21:24 UTC | newest]
Thread overview: 1074+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2019-06-06 23:37 Re: Avoiding hash join batch explosions with extreme skew and weird stats Melanie Plageman <[email protected]>
2019-06-07 14:05 ` Tomas Vondra <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v5 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v1 2/2] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v4 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
2026-05-04 21:24 [PATCH v3 2/3] Remove HAS_TEST_AND_SET. Nathan Bossart <[email protected]>
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox