-#if !(USLOCK_DEBUG || USLOCK_STATS)
-/*
- * Take responsibility for production-quality usimple_locks.
- * Let the portable lock package build simple_locks in terms
- * of usimple_locks, which is done efficiently with macros.
- * Currently, these aren't inlined although they probably
- * should be. The portable lock package is used for the
- * usimple_lock prototypes and data declarations.
- *
- * For non-production configurations, punt entirely to the
- * portable lock package.
- *
- * N.B. I've left in the hooks for ETAP, so we can
- * compare the performance of stats-gathering on top
- * of "production" locks v. stats-gathering on top
- * of portable, C-based locks.
- */
-#define USIMPLE_LOCK_CALLS
-#endif /* !(USLOCK_DEBUG || USLOCK_STATS) */
-
-
-#if MACH_RT || (NCPUS > 1) || MACH_LDEBUG
-#if MACH_LDEBUG || !MACH_RT
-#define mutex_try(m) (!(m)->interlock && _mutex_try(m))
-#define mutex_lock(m) \
-MACRO_BEGIN \
- assert(assert_wait_possible()); \
- _mutex_lock((m)); \
-MACRO_END
-
-#else /* MACH_LDEBUG || !MACH_RT */
-#define mutex_try(m) (!(m)->interlock && \
- !xchgb ((volatile char *)&((m)->locked), 1))
-#define mutex_lock(m) \
-MACRO_BEGIN \
- assert(assert_wait_possible()); \
- _mutex_lock (m); \
-MACRO_END
-
-#endif /* MACH_LDEBUG || !MACH_RT */
-#else /* MACH_RT || (NCPUS > 1) || MACH_LDEBUG */
-#define mutex_try _mutex_try
-#define mutex_lock _mutex_lock
-#endif /* MACH_RT || (NCPUS > 1) || MACH_LDEBUG */
-
-#else /* !MACH_KERNEL_PRIVATE */
-
-#define mutex_try _mutex_try
-#define mutex_lock(m) \
-MACRO_BEGIN \
- assert(assert_wait_possible()); \
- _mutex_lock((m)); \
-MACRO_END
-
-#endif /* !MACH_KERNEL_PRIVATE */