diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-06 19:40:13 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-04-06 19:40:13 +0000 |
commit | c9152af4c8d52e1aa252652274a422d27d4fd2cd (patch) | |
tree | 465a06aec37f70919fbbca7014a5c0a868ff8071 /include | |
parent | 65403051b5a2d23840242c3db1574dd24bb60a48 (diff) |
Merged revisions 256370 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
........
r256370 | tilghman | 2010-04-06 14:28:42 -0500 (Tue, 06 Apr 2010) | 2 lines
Mac OS X does not support comparing a mutex to its initializer. Create a test for this.
........
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@256372 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/autoconfig.h.in | 4 | ||||
-rw-r--r-- | include/asterisk/lock.h | 36 |
2 files changed, 22 insertions, 18 deletions
diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index f58bb86f9..cf370af8b 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -10,6 +10,10 @@ /* Define to 1 if internal poll should be used. */ #undef AST_POLL_COMPAT +/* Define to 1 if your system's implementation of mutexes supports comparison + of a mutex to its initializer. */ +#undef CAN_COMPARE_MUTEX_TO_INIT_VALUE + /* Define to 1 if the `closedir' function returns void instead of `int'. */ #undef CLOSEDIR_VOID diff --git a/include/asterisk/lock.h b/include/asterisk/lock.h index e29de6116..a000eca06 100644 --- a/include/asterisk/lock.h +++ b/include/asterisk/lock.h @@ -82,7 +82,7 @@ #define AST_PTHREADT_NULL (pthread_t) -1 #define AST_PTHREADT_STOP (pthread_t) -2 -#if (defined(SOLARIS) || defined(BSD)) && !defined(__Darwin__) +#if (defined(SOLARIS) || defined(BSD)) #define AST_MUTEX_INIT_W_CONSTRUCTORS #endif /* SOLARIS || BSD */ @@ -379,7 +379,7 @@ static inline int __ast_pthread_mutex_init(int tracking, const char *filename, i int res; pthread_mutexattr_t attr; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) != ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { /* @@ -416,7 +416,7 @@ static inline int __ast_pthread_mutex_destroy(const char *filename, int lineno, struct ast_lock_track *lt; int canlog = strcmp(filename, "logger.c") & t->tracking; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { /* Don't try to uninitialize non initialized mutex * This may no effect on linux @@ -484,7 +484,7 @@ static inline int __ast_pthread_mutex_lock(const char *filename, int lineno, con struct ast_bt *bt = NULL; #endif -#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { /* Don't warn abount uninitialized mutex. * Simple try to initialize it. @@ -608,7 +608,7 @@ static inline int __ast_pthread_mutex_trylock(const char *filename, int lineno, struct ast_bt *bt = NULL; #endif -#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { /* Don't warn abount uninitialized mutex. * Simple try to initialize it. @@ -670,7 +670,7 @@ static inline int __ast_pthread_mutex_unlock(const char *filename, int lineno, c struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { __ast_mutex_logger("%s line %d (%s): Error: mutex '%s' is uninitialized.\n", filename, lineno, func, mutex_name); @@ -767,7 +767,7 @@ static inline int __ast_cond_wait(const char *filename, int lineno, const char * struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { __ast_mutex_logger("%s line %d (%s): Error: mutex '%s' is uninitialized.\n", filename, lineno, func, mutex_name); @@ -865,7 +865,7 @@ static inline int __ast_cond_timedwait(const char *filename, int lineno, const c struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->mutex) == ((pthread_mutex_t) PTHREAD_MUTEX_INITIALIZER)) { __ast_mutex_logger("%s line %d (%s): Error: mutex '%s' is uninitialized.\n", filename, lineno, func, mutex_name); @@ -1010,8 +1010,8 @@ static inline int __ast_rwlock_init(int tracking, const char *filename, int line struct ast_lock_track *lt= &t->track; pthread_rwlockattr_t attr; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS - int canlog = strcmp(filename, "logger.c") & t->tracking; +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) + int canlog = strcmp(filename, "logger.c") & t->tracking; if (t->lock != ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { __ast_mutex_logger("%s line %d (%s): Warning: rwlock '%s' is already initialized.\n", @@ -1039,7 +1039,7 @@ static inline int __ast_rwlock_destroy(const char *filename, int lineno, const c struct ast_lock_track *lt = &t->track; int canlog = strcmp(filename, "logger.c") & t->tracking; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if (t->lock == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { __ast_mutex_logger("%s line %d (%s): Warning: rwlock '%s' is uninitialized.\n", filename, lineno, func, rwlock_name); @@ -1078,7 +1078,7 @@ static inline int _ast_rwlock_unlock(ast_rwlock_t *t, const char *name, int lock_found = 0; -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { __ast_mutex_logger("%s line %d (%s): Warning: rwlock '%s' is uninitialized.\n", filename, line, func, name); @@ -1151,7 +1151,7 @@ static inline int _ast_rwlock_rdlock(ast_rwlock_t *t, const char *name, struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { /* Don't warn abount uninitialized lock. * Simple try to initialize it. @@ -1259,7 +1259,7 @@ static inline int _ast_rwlock_wrlock(ast_rwlock_t *t, const char *name, struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { /* Don't warn abount uninitialized lock. * Simple try to initialize it. @@ -1369,7 +1369,7 @@ static inline int _ast_rwlock_timedrdlock(ast_rwlock_t *t, const char *name, struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { /* Don't warn abount uninitialized lock. * Simple try to initialize it. @@ -1464,7 +1464,7 @@ static inline int _ast_rwlock_timedwrlock(ast_rwlock_t *t, const char *name, struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { /* Don't warn abount uninitialized lock. * Simple try to initialize it. @@ -1554,7 +1554,7 @@ static inline int _ast_rwlock_tryrdlock(ast_rwlock_t *t, const char *name, #ifdef HAVE_BKTR struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) int canlog = strcmp(filename, "logger.c") & t->tracking; if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { @@ -1612,7 +1612,7 @@ static inline int _ast_rwlock_trywrlock(ast_rwlock_t *t, const char *name, #ifdef HAVE_BKTR struct ast_bt *bt = NULL; #endif -#ifdef AST_MUTEX_INIT_W_CONSTRUCTORS +#if defined(AST_MUTEX_INIT_W_CONSTRUCTORS) && defined(CAN_COMPARE_MUTEX_TO_INIT_VALUE) int canlog = strcmp(filename, "logger.c") & t->tracking; if ((t->lock) == ((pthread_rwlock_t) __AST_RWLOCK_INIT_VALUE)) { |