1diff -ur a/dist/aclocal/mutex.m4 b/dist/aclocal/mutex.m4
2--- a/dist/aclocal/mutex.m4 1969-12-31 19:00:01.000000000 -0500
3+++ b/dist/aclocal/mutex.m4 2023-06-05 19:14:47.214158196 -0400
4@@ -441,10 +445,11 @@
5
6 # _spin_lock_try/_spin_unlock: Apple/Darwin
7 if test "$db_cv_mutex" = no; then
8-AC_TRY_LINK(,[
9- int x;
10- _spin_lock_try(&x);
11- _spin_unlock(&x);
12+AC_TRY_LINK([
13+#include <os/lock.h>],[
14+ os_unfair_lock x = OS_UNFAIR_LOCK_INIT;
15+ bool _ = os_unfair_lock_trylock(&x);
16+ os_unfair_lock_unlock(&x);
17 ], [db_cv_mutex=Darwin/_spin_lock_try])
18 fi
19
20diff -ur a/src/dbinc/mutex_int.h b/src/dbinc/mutex_int.h
21--- a/src/dbinc/mutex_int.h 1969-12-31 19:00:01.000000000 -0500
22+++ b/src/dbinc/mutex_int.h 2023-06-05 19:15:37.510514745 -0400
23@@ -154,14 +154,13 @@
24 * Apple/Darwin library functions.
25 *********************************************************************/
26 #ifdef HAVE_MUTEX_DARWIN_SPIN_LOCK_TRY
27-typedef u_int32_t tsl_t;
28+#include <os/lock.h>
29+typedef os_unfair_lock tsl_t;
30
31 #ifdef LOAD_ACTUAL_MUTEX_CODE
32-extern int _spin_lock_try(tsl_t *);
33-extern void _spin_unlock(tsl_t *);
34-#define MUTEX_SET(tsl) _spin_lock_try(tsl)
35-#define MUTEX_UNSET(tsl) _spin_unlock(tsl)
36-#define MUTEX_INIT(tsl) (MUTEX_UNSET(tsl), 0)
37+#define MUTEX_SET(tsl) os_unfair_lock_trylock(tsl)
38+#define MUTEX_UNSET(tsl) os_unfair_lock_unlock(tsl)
39+#define MUTEX_INIT(tsl) ({ *(tsl) = OS_UNFAIR_LOCK_INIT; tsl; })
40 #endif
41 #endif
42