diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h index bd777f0445..5958aa4774 100644 --- a/include/asterisk/lock.h +++ b/include/asterisk/lock.h @@ -675,11 +675,11 @@ static inline int ast_mutex_init(ast_mutex_t *pmutex) int res; pthread_mutexattr_t attr; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for already init'ed mutex for BSD */ - if (*pmutex != PTHREAD_MUTEX_INITIALIZER) + if (*pmutex != ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) return 0; -#endif +#endif /* BSD */ pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, AST_MUTEX_KIND); @@ -692,42 +692,42 @@ static inline int ast_mutex_init(ast_mutex_t *pmutex) static inline int ast_mutex_unlock(ast_mutex_t *pmutex) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized mutex for BSD */ - if (*pmutex == PTHREAD_MUTEX_INITIALIZER) { + if (*pmutex == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { ast_mutex_init(pmutex); return 0; } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_mutex_unlock(pmutex); } static inline int ast_mutex_destroy(ast_mutex_t *pmutex) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS - if (*pmutex == PTHREAD_MUTEX_INITIALIZER) +#ifdef BSD + if (*pmutex == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) return 0; -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_mutex_destroy(pmutex); } static inline int ast_mutex_lock(ast_mutex_t *pmutex) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized mutex for BSD */ - if (*pmutex == PTHREAD_MUTEX_INITIALIZER) + if (*pmutex == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) ast_mutex_init(pmutex); -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ __MTX_PROF(pmutex); } static inline int ast_mutex_trylock(ast_mutex_t *pmutex) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized mutex for BSD */ - if (*pmutex == PTHREAD_MUTEX_INITIALIZER) + if (*pmutex == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) ast_mutex_init(pmutex); -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_mutex_trylock(pmutex); } @@ -1037,11 +1037,11 @@ static inline int ast_rwlock_init(ast_rwlock_t *prwlock) int res; pthread_rwlockattr_t attr; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for already init'ed lock for BSD */ if (*prwlock != ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) return 0; -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ pthread_rwlockattr_init(&attr); #ifdef HAVE_PTHREAD_RWLOCK_PREFER_WRITER_NP @@ -1055,67 +1055,67 @@ static inline int ast_rwlock_init(ast_rwlock_t *prwlock) static inline int ast_rwlock_destroy(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized mutex for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) return 0; -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_destroy(prwlock); } static inline int ast_rwlock_unlock(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized lock for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) { ast_rwlock_init(prwlock); return 0; } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_unlock(prwlock); } static inline int ast_rwlock_rdlock(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized lock for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) { ast_rwlock_init(prwlock); } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_rdlock(prwlock); } static inline int ast_rwlock_tryrdlock(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized lock for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) { ast_rwlock_init(prwlock); } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_tryrdlock(prwlock); } static inline int ast_rwlock_wrlock(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized lock for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) { ast_rwlock_init(prwlock); } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_wrlock(prwlock); } static inline int ast_rwlock_trywrlock(ast_rwlock_t *prwlock) { -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#ifdef BSD /* Check for uninitialized lock for BSD */ if (*prwlock == ((ast_rwlock_t) AST_RWLOCK_INIT_VALUE)) { ast_rwlock_init(prwlock); } -#endif /* AST_MUTEX_INIT_W_CONSTRUCTORS */ +#endif /* BSD */ return pthread_rwlock_trywrlock(prwlock); } #endif /* !DEBUG_THREADS */