pgsql: Use __sync_lock_test_and_set() for spinlocks on ARM, if availabl - Mailing list pgsql-committers

From Tom Lane
Subject pgsql: Use __sync_lock_test_and_set() for spinlocks on ARM, if availabl
Date
Msg-id E1Rjd3b-0000mb-KD@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Use __sync_lock_test_and_set() for spinlocks on ARM, if available.

Historically we've used the SWPB instruction for TAS() on ARM, but this
is deprecated and not available on ARMv6 and later.  Instead, make use
of a GCC builtin if available.  We'll still fall back to SWPB if not,
so as not to break existing ports using older GCC versions.

Eventually we might want to try using __sync_lock_test_and_set() on some
other architectures too, but for now that seems to present only risk and
not reward.

Back-patch to all supported versions, since people might want to use any
of them on more recent ARM chips.

Martin Pitt

Branch
------
REL8_3_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/aa31c350fe01c4f5db571ea48b32869d97b70db4

Modified Files
--------------
configure                    |   65 ++++++++++++++++++++++++++++++++++++++++++
configure.in                 |   12 ++++++++
src/include/pg_config.h.in   |    3 ++
src/include/storage/s_lock.h |   25 +++++++++++++++-
4 files changed, 103 insertions(+), 2 deletions(-)


pgsql-committers by date:

Previous
From: Robert Haas
Date:
Subject: pgsql: Slightly reorganize struct SnapshotData.
Next
From: Tom Lane
Date:
Subject: pgsql: Use __sync_lock_test_and_set() for spinlocks on ARM, if availabl