X-Git-Url: https://git.saurik.com/apple/objc4.git/blobdiff_plain/31875a974789e6fabb418ee53dff5e8f10fd8119..refs/heads/master:/runtime/objc-lockdebug.h diff --git a/runtime/objc-lockdebug.h b/runtime/objc-lockdebug.h index 071064d..a69ee06 100644 --- a/runtime/objc-lockdebug.h +++ b/runtime/objc-lockdebug.h @@ -21,32 +21,52 @@ * @APPLE_LICENSE_HEADER_END@ */ +#if LOCKDEBUG +extern void lockdebug_assert_all_locks_locked(); +extern void lockdebug_assert_no_locks_locked(); +extern void lockdebug_assert_no_locks_locked_except(std::initializer_list canBeLocked); +extern void lockdebug_setInForkPrepare(bool); +extern void lockdebug_lock_precedes_lock(const void *oldlock, const void *newlock); +#else +static constexpr inline void lockdebug_assert_all_locks_locked() { } +static constexpr inline void lockdebug_assert_no_locks_locked() { } +static constexpr inline void lockdebug_assert_no_locks_locked_except(std::initializer_list canBeLocked) { }; +static constexpr inline void lockdebug_setInForkPrepare(bool) { } +static constexpr inline void lockdebug_lock_precedes_lock(const void *, const void *) { } +#endif + +extern void lockdebug_remember_mutex(mutex_tt *lock); extern void lockdebug_mutex_lock(mutex_tt *lock); extern void lockdebug_mutex_try_lock(mutex_tt *lock); extern void lockdebug_mutex_unlock(mutex_tt *lock); extern void lockdebug_mutex_assert_locked(mutex_tt *lock); extern void lockdebug_mutex_assert_unlocked(mutex_tt *lock); -static inline void lockdebug_mutex_lock(mutex_tt *lock) { } -static inline void lockdebug_mutex_try_lock(mutex_tt *lock) { } -static inline void lockdebug_mutex_unlock(mutex_tt *lock) { } -static inline void lockdebug_mutex_assert_locked(mutex_tt *lock) { } -static inline void lockdebug_mutex_assert_unlocked(mutex_tt *lock) { } +static constexpr inline void lockdebug_remember_mutex(__unused mutex_tt *lock) { } +static constexpr inline void lockdebug_mutex_lock(__unused mutex_tt *lock) { } +static constexpr inline void lockdebug_mutex_try_lock(__unused mutex_tt *lock) { } +static constexpr inline void lockdebug_mutex_unlock(__unused mutex_tt *lock) { } +static constexpr inline void lockdebug_mutex_assert_locked(__unused mutex_tt *lock) { } +static constexpr inline void lockdebug_mutex_assert_unlocked(__unused mutex_tt *lock) { } +extern void lockdebug_remember_monitor(monitor_tt *lock); extern void lockdebug_monitor_enter(monitor_tt *lock); extern void lockdebug_monitor_leave(monitor_tt *lock); extern void lockdebug_monitor_wait(monitor_tt *lock); extern void lockdebug_monitor_assert_locked(monitor_tt *lock); extern void lockdebug_monitor_assert_unlocked(monitor_tt *lock); -static inline void lockdebug_monitor_enter(monitor_tt *lock) { } -static inline void lockdebug_monitor_leave(monitor_tt *lock) { } -static inline void lockdebug_monitor_wait(monitor_tt *lock) { } -static inline void lockdebug_monitor_assert_locked(monitor_tt *lock) { } -static inline void lockdebug_monitor_assert_unlocked(monitor_tt *lock) {} +static constexpr inline void lockdebug_remember_monitor(__unused monitor_tt *lock) { } +static constexpr inline void lockdebug_monitor_enter(__unused monitor_tt *lock) { } +static constexpr inline void lockdebug_monitor_leave(__unused monitor_tt *lock) { } +static constexpr inline void lockdebug_monitor_wait(__unused monitor_tt *lock) { } +static constexpr inline void lockdebug_monitor_assert_locked(__unused monitor_tt *lock) { } +static constexpr inline void lockdebug_monitor_assert_unlocked(__unused monitor_tt *lock) {} +extern void +lockdebug_remember_recursive_mutex(recursive_mutex_tt *lock); extern void lockdebug_recursive_mutex_lock(recursive_mutex_tt *lock); extern void @@ -56,34 +76,13 @@ lockdebug_recursive_mutex_assert_locked(recursive_mutex_tt *lock); extern void lockdebug_recursive_mutex_assert_unlocked(recursive_mutex_tt *lock); -static inline void -lockdebug_recursive_mutex_lock(recursive_mutex_tt *lock) { } -static inline void -lockdebug_recursive_mutex_unlock(recursive_mutex_tt *lock) { } -static inline void -lockdebug_recursive_mutex_assert_locked(recursive_mutex_tt *lock) { } -static inline void -lockdebug_recursive_mutex_assert_unlocked(recursive_mutex_tt *lock) { } - - -extern void lockdebug_rwlock_read(rwlock_tt *lock); -extern void lockdebug_rwlock_try_read_success(rwlock_tt *lock); -extern void lockdebug_rwlock_unlock_read(rwlock_tt *lock); -extern void lockdebug_rwlock_write(rwlock_tt *lock); -extern void lockdebug_rwlock_try_write_success(rwlock_tt *lock); -extern void lockdebug_rwlock_unlock_write(rwlock_tt *lock); -extern void lockdebug_rwlock_assert_reading(rwlock_tt *lock); -extern void lockdebug_rwlock_assert_writing(rwlock_tt *lock); -extern void lockdebug_rwlock_assert_locked(rwlock_tt *lock); -extern void lockdebug_rwlock_assert_unlocked(rwlock_tt *lock); - -static inline void lockdebug_rwlock_read(rwlock_tt *) { } -static inline void lockdebug_rwlock_try_read_success(rwlock_tt *) { } -static inline void lockdebug_rwlock_unlock_read(rwlock_tt *) { } -static inline void lockdebug_rwlock_write(rwlock_tt *) { } -static inline void lockdebug_rwlock_try_write_success(rwlock_tt *) { } -static inline void lockdebug_rwlock_unlock_write(rwlock_tt *) { } -static inline void lockdebug_rwlock_assert_reading(rwlock_tt *) { } -static inline void lockdebug_rwlock_assert_writing(rwlock_tt *) { } -static inline void lockdebug_rwlock_assert_locked(rwlock_tt *) { } -static inline void lockdebug_rwlock_assert_unlocked(rwlock_tt *) { } +static constexpr inline void +lockdebug_remember_recursive_mutex(__unused recursive_mutex_tt *lock) { } +static constexpr inline void +lockdebug_recursive_mutex_lock(__unused recursive_mutex_tt *lock) { } +static constexpr inline void +lockdebug_recursive_mutex_unlock(__unused recursive_mutex_tt *lock) { } +static constexpr inline void +lockdebug_recursive_mutex_assert_locked(__unused recursive_mutex_tt *lock) { } +static constexpr inline void +lockdebug_recursive_mutex_assert_unlocked(__unused recursive_mutex_tt *lock) { }