summaryrefslogtreecommitdiff
path: root/mysys/my_thr_init.c
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-04-27 09:59:12 +0200
committerunknown <msvensson@neptunus.(none)>2005-04-27 09:59:12 +0200
commit7e04d257eb2f0cf89f07a161e7ac3762366c5da2 (patch)
treee08fea906b88d0aa8efd72835e8cea713d2ce9cd /mysys/my_thr_init.c
parent20cf8f82eefbc4db26ec50aef4f602c991811397 (diff)
downloadmariadb-git-7e04d257eb2f0cf89f07a161e7ac3762366c5da2.tar.gz
Bug #9954 mysql-4.1.11/cmd-line-utils/libedit/makelist.sh is not portable
- Changed makelist.sh - Bump up required version of autoconf - Use new style to init mutex in my_thr_init cmd-line-utils/libedit/makelist.sh: Changed file so it works also on windows cr/lf files. configure.in: Bump up required AC version number so that correct version of aclocal and autoconf is selected. include/my_pthread.h: Use PTHREAD_MUTEX_ADAPTIVE_NP to see if "fast" mutexes are available Remove "errorcheck" mutexes, since they are never used. mysys/my_thr_init.c: Use new style functions to init mutex if PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP is defined Add comment what mutex "kind" means
Diffstat (limited to 'mysys/my_thr_init.c')
-rw-r--r--mysys/my_thr_init.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/mysys/my_thr_init.c b/mysys/my_thr_init.c
index 36b37f68b46..93ba34ea5b4 100644
--- a/mysys/my_thr_init.c
+++ b/mysys/my_thr_init.c
@@ -40,9 +40,6 @@ pthread_mutex_t LOCK_gethostbyname_r;
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_t my_fast_mutexattr;
#endif
-#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
-pthread_mutexattr_t my_errchk_mutexattr;
-#endif
/*
initialize thread environment
@@ -62,19 +59,21 @@ my_bool my_thread_global_init(void)
fprintf(stderr,"Can't initialize threads: error %d\n",errno);
return 1;
}
+
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
- pthread_mutexattr_init(&my_fast_mutexattr);
/*
- Note that the following statement may give a compiler warning under
- some configurations, but there isn't anything we can do about this as
- this is a bug in the header files for the thread implementation
+ Set mutex type to "fast" a.k.a "adaptive"
+
+ The mutex kind determines what happens if a thread attempts to lock
+ a mutex it already owns with pthread_mutex_lock(3). If the mutex
+ is of the ``fast'' kind, pthread_mutex_lock(3) simply suspends
+ the calling thread forever. If the mutex is of the ``error checking''
+ kind, pthread_mutex_lock(3) returns immediately with the error
+ code EDEADLK.
*/
- pthread_mutexattr_setkind_np(&my_fast_mutexattr,PTHREAD_MUTEX_ADAPTIVE_NP);
-#endif
-#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
- pthread_mutexattr_init(&my_errchk_mutexattr);
- pthread_mutexattr_setkind_np(&my_errchk_mutexattr,
- PTHREAD_MUTEX_ERRORCHECK_NP);
+ pthread_mutexattr_init(&my_fast_mutexattr);
+ pthread_mutexattr_settype(&my_fast_mutexattr,
+ PTHREAD_MUTEX_ADAPTIVE_NP);
#endif
pthread_mutex_init(&THR_LOCK_malloc,MY_MUTEX_INIT_FAST);
@@ -109,9 +108,6 @@ void my_thread_global_end(void)
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_destroy(&my_fast_mutexattr);
#endif
-#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
- pthread_mutexattr_destroy(&my_errchk_mutexattr);
-#endif
pthread_mutex_destroy(&THR_LOCK_malloc);
pthread_mutex_destroy(&THR_LOCK_open);
pthread_mutex_destroy(&THR_LOCK_lock);