#ifndef __LOCKING_H
#define __LOCKING_H
#if OS_UNFAIR_LOCK_INLINE
#define os_unfair_lock_lock_with_options(lock, options) \
os_unfair_lock_lock_with_options_inline(lock, options)
#define os_unfair_lock_trylock(lock) \
os_unfair_lock_trylock_inline(lock)
#define os_unfair_lock_unlock(lock) \
os_unfair_lock_unlock_inline(lock)
#endif // OS_UNFAIR_LOCK_INLINE
typedef os_unfair_lock _malloc_lock_s;
#define _MALLOC_LOCK_INIT OS_UNFAIR_LOCK_INIT
__attribute__((always_inline))
static inline void
_malloc_lock_init(_malloc_lock_s *lock) {
*lock = OS_UNFAIR_LOCK_INIT;
}
MALLOC_ALWAYS_INLINE
static inline void
_malloc_lock_lock(_malloc_lock_s *lock) {
return os_unfair_lock_lock_with_options(lock, OS_UNFAIR_LOCK_ADAPTIVE_SPIN |
OS_UNFAIR_LOCK_DATA_SYNCHRONIZATION);
}
MALLOC_ALWAYS_INLINE
static inline bool
_malloc_lock_trylock(_malloc_lock_s *lock) {
return os_unfair_lock_trylock(lock);
}
MALLOC_ALWAYS_INLINE
static inline void
_malloc_lock_unlock(_malloc_lock_s *lock) {
return os_unfair_lock_unlock(lock);
}
MALLOC_ALWAYS_INLINE
static inline void
_malloc_lock_assert_owner(_malloc_lock_s *lock) {
os_unfair_lock_assert_owner(lock);
}
#endif // __LOCKING_H