1 diff -ur db-5.3.28.orig/src/dbinc/atomic.h db-5.3.28/src/dbinc/atomic.h
2 --- db-5.3.28.orig/src/dbinc/atomic.h 2013-09-09 17:35:08.000000000 +0200
3 +++ db-5.3.28/src/dbinc/atomic.h 2020-10-29 19:09:22.546238669 +0100
5 * atomic_dec(env, valueptr)
6 * Subtracts 1 from the db_atomic_t value, returning the new value.
8 - * atomic_compare_exchange(env, valueptr, oldval, newval)
9 + * atomic_compare_exchange_db(env, valueptr, oldval, newval)
10 * If the db_atomic_t's value is still oldval, set it to newval.
11 * It returns 1 for success or 0 for failure.
14 (WINCE_ATOMIC_MAGIC(p), \
15 InterlockedDecrement((interlocked_val)(&(p)->value)))
16 #if defined(_MSC_VER) && _MSC_VER < 1300
17 -#define atomic_compare_exchange(env, p, oldval, newval) \
18 +#define atomic_compare_exchange_db(env, p, oldval, newval) \
19 (WINCE_ATOMIC_MAGIC(p), \
20 (InterlockedCompareExchange((PVOID *)(&(p)->value), \
21 (PVOID)(newval), (PVOID)(oldval)) == (PVOID)(oldval)))
23 -#define atomic_compare_exchange(env, p, oldval, newval) \
24 +#define atomic_compare_exchange_db(env, p, oldval, newval) \
25 (WINCE_ATOMIC_MAGIC(p), \
26 (InterlockedCompareExchange((interlocked_val)(&(p)->value), \
27 (newval), (oldval)) == (oldval)))
29 atomic_inc_uint_nv((volatile unsigned int *) &(p)->value)
30 #define atomic_dec(env, p) \
31 atomic_dec_uint_nv((volatile unsigned int *) &(p)->value)
32 -#define atomic_compare_exchange(env, p, oval, nval) \
33 +#define atomic_compare_exchange_db(env, p, oval, nval) \
34 (atomic_cas_32((volatile unsigned int *) &(p)->value, \
35 (oval), (nval)) == (oval))
39 #define atomic_inc(env, p) __atomic_inc(p)
40 #define atomic_dec(env, p) __atomic_dec(p)
41 -#define atomic_compare_exchange(env, p, o, n) \
42 - __atomic_compare_exchange((p), (o), (n))
43 +#define atomic_compare_exchange_db(env, p, o, n) \
44 + __atomic_compare_exchange_db((p), (o), (n))
45 static inline int __atomic_inc(db_atomic_t *p)
49 * http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/Atomic-Builtins.html
50 * which configure could be changed to use.
52 -static inline int __atomic_compare_exchange(
53 +static inline int __atomic_compare_exchange_db(
54 db_atomic_t *p, atomic_value_t oldval, atomic_value_t newval)
59 #define atomic_inc(env, p) (++(p)->value)
60 #define atomic_dec(env, p) (--(p)->value)
61 -#define atomic_compare_exchange(env, p, oldval, newval) \
62 +#define atomic_compare_exchange_db(env, p, oldval, newval) \
63 (DB_ASSERT(env, atomic_read(p) == (oldval)), \
64 atomic_init(p, (newval)), 1)
66 diff -ur db-5.3.28.orig/src/dbinc/mutex_int.h db-5.3.28/src/dbinc/mutex_int.h
67 --- db-5.3.28.orig/src/dbinc/mutex_int.h 2013-09-09 17:35:08.000000000 +0200
68 +++ db-5.3.28/src/dbinc/mutex_int.h 2020-10-29 19:09:29.846238669 +0100
71 #define MUTEXP_ACQUIRE(mutexp) \
72 (F_ISSET(mutexp, DB_MUTEX_SHARED) ? \
73 - atomic_compare_exchange(env, \
74 + atomic_compare_exchange_db(env, \
75 &(mutexp)->sharecount, 0, MUTEX_SHARE_ISEXCLUSIVE) : \
76 MUTEX_SET(&(mutexp)->tas))
78 diff -ur db-5.3.28.orig/src/dbinc_auto/int_def.in db-5.3.28/src/dbinc_auto/int_def.in
79 --- db-5.3.28.orig/src/dbinc_auto/int_def.in 2013-09-09 17:35:08.000000000 +0200
80 +++ db-5.3.28/src/dbinc_auto/int_def.in 2020-10-29 19:09:56.642238669 +0100
82 #define __atomic_dec __atomic_dec@DB_VERSION_UNIQUE_NAME@
84 #if !defined(HAVE_ATOMIC_SUPPORT) && defined(HAVE_MUTEX_SUPPORT)
85 -#define atomic_compare_exchange atomic_compare_exchange@DB_VERSION_UNIQUE_NAME@
86 +#define atomic_compare_exchange_db atomic_compare_exchange_db@DB_VERSION_UNIQUE_NAME@
88 #define __db_pthread_mutex_init __db_pthread_mutex_init@DB_VERSION_UNIQUE_NAME@
89 #ifndef HAVE_MUTEX_HYBRID
90 diff -ur db-5.3.28.orig/src/dbinc_auto/mutex_ext.h db-5.3.28/src/dbinc_auto/mutex_ext.h
91 --- db-5.3.28.orig/src/dbinc_auto/mutex_ext.h 2013-09-09 17:35:08.000000000 +0200
92 +++ db-5.3.28/src/dbinc_auto/mutex_ext.h 2020-10-29 19:10:00.649238669 +0100
94 atomic_value_t __atomic_dec __P((ENV *, db_atomic_t *));
96 #if !defined(HAVE_ATOMIC_SUPPORT) && defined(HAVE_MUTEX_SUPPORT)
97 -int atomic_compare_exchange __P((ENV *, db_atomic_t *, atomic_value_t, atomic_value_t));
98 +int atomic_compare_exchange_db __P((ENV *, db_atomic_t *, atomic_value_t, atomic_value_t));
100 int __db_pthread_mutex_init __P((ENV *, db_mutex_t, u_int32_t));
101 #ifndef HAVE_MUTEX_HYBRID
102 diff -ur db-5.3.28.orig/src/mutex/mut_method.c db-5.3.28/src/mutex/mut_method.c
103 --- db-5.3.28.orig/src/mutex/mut_method.c 2013-09-09 17:35:09.000000000 +0200
104 +++ db-5.3.28/src/mutex/mut_method.c 2020-10-29 19:09:45.172238669 +0100
105 @@ -445,11 +445,11 @@
109 - * atomic_compare_exchange
110 + * atomic_compare_exchange_db
111 * Use a mutex to provide an atomic decrement function
113 * PUBLIC: #if !defined(HAVE_ATOMIC_SUPPORT) && defined(HAVE_MUTEX_SUPPORT)
114 - * PUBLIC: int atomic_compare_exchange
115 + * PUBLIC: int atomic_compare_exchange_db
116 * PUBLIC: __P((ENV *, db_atomic_t *, atomic_value_t, atomic_value_t));
118 * Returns 1 if the *v was equal to oldval, else 0
120 * Sets the value to newval if and only if returning 1
123 -atomic_compare_exchange(env, v, oldval, newval)
124 +atomic_compare_exchange_db(env, v, oldval, newval)
127 atomic_value_t oldval;
128 diff -ur db-5.3.28.orig/src/mutex/mut_tas.c db-5.3.28/src/mutex/mut_tas.c
129 --- db-5.3.28.orig/src/mutex/mut_tas.c 2013-09-09 17:35:09.000000000 +0200
130 +++ db-5.3.28/src/mutex/mut_tas.c 2020-10-29 19:09:40.046238669 +0100
132 mtxregion->stat.st_mutex_tas_spins; nspins > 0; --nspins) {
133 lock = atomic_read(&mutexp->sharecount);
134 if (lock == MUTEX_SHARE_ISEXCLUSIVE ||
135 - !atomic_compare_exchange(env,
136 + !atomic_compare_exchange_db(env,
137 &mutexp->sharecount, lock, lock + 1)) {
139 * Some systems (notably those with newer Intel CPUs)
140 diff -ur db-5.3.28.orig/src/mutex/mut_win32.c db-5.3.28/src/mutex/mut_win32.c
141 --- db-5.3.28.orig/src/mutex/mut_win32.c 2013-09-09 17:35:09.000000000 +0200
142 +++ db-5.3.28/src/mutex/mut_win32.c 2020-10-29 19:09:51.148238669 +0100
144 return (DB_LOCK_NOTGRANTED);
147 - } else if (!atomic_compare_exchange(env, &mutexp->sharecount,
148 + } else if (!atomic_compare_exchange_db(env, &mutexp->sharecount,
149 mtx_val, mtx_val + 1)) {
151 * Some systems (notably those with newer Intel CPUs)