Commit 7f982988 authored by unknown's avatar unknown

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
parent 3d856390
...@@ -68,7 +68,7 @@ case $FLAG in ...@@ -68,7 +68,7 @@ case $FLAG in
/\(\):/ { /\(\):/ {
pr = substr($2, 1, 2); pr = substr($2, 1, 2);
if (pr == "vi" || pr == "em" || pr == "ed") { if (pr == "vi" || pr == "em" || pr == "ed") {
name = substr($2, 1, length($2) - 3); name = substr($2, 1, index($2,"(") - 1);
# #
# XXX: need a space between name and prototype so that -fc and -fh # XXX: need a space between name and prototype so that -fc and -fh
# parsing is much easier # parsing is much easier
...@@ -97,7 +97,7 @@ case $FLAG in ...@@ -97,7 +97,7 @@ case $FLAG in
/\(\):/ { /\(\):/ {
pr = substr($2, 1, 2); pr = substr($2, 1, 2);
if (pr == "vi" || pr == "em" || pr == "ed") { if (pr == "vi" || pr == "em" || pr == "ed") {
name = substr($2, 1, length($2) - 3); name = substr($2, 1, index($2,"(") - 1);
uname = ""; uname = "";
fname = ""; fname = "";
for (i = 1; i <= length(name); i++) { for (i = 1; i <= length(name); i++) {
...@@ -117,6 +117,7 @@ case $FLAG in ...@@ -117,6 +117,7 @@ case $FLAG in
printf(" \""); printf(" \"");
for (i = 2; i < NF; i++) for (i = 2; i < NF; i++)
printf("%s ", $i); printf("%s ", $i);
sub("\r", "", $i);
printf("%s\" },\n", $i); printf("%s\" },\n", $i);
ok = 0; ok = 0;
} }
...@@ -219,7 +220,7 @@ case $FLAG in ...@@ -219,7 +220,7 @@ case $FLAG in
/\(\):/ { /\(\):/ {
pr = substr($2, 1, 2); pr = substr($2, 1, 2);
if (pr == "vi" || pr == "em" || pr == "ed") { if (pr == "vi" || pr == "em" || pr == "ed") {
name = substr($2, 1, length($2) - 3); name = substr($2, 1, index($2, "(") - 1);
fname = ""; fname = "";
for (i = 1; i <= length(name); i++) { for (i = 1; i <= length(name); i++) {
s = substr(name, i, 1); s = substr(name, i, 1);
......
...@@ -118,7 +118,7 @@ AC_SUBST(SAVE_LDFLAGS) ...@@ -118,7 +118,7 @@ AC_SUBST(SAVE_LDFLAGS)
AC_SUBST(SAVE_CXXLDFLAGS) AC_SUBST(SAVE_CXXLDFLAGS)
AC_SUBST(CXXLDFLAGS) AC_SUBST(CXXLDFLAGS)
AC_PREREQ(2.12)dnl Minimum Autoconf version required. AC_PREREQ(2.58)dnl Minimum Autoconf version required.
#AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE #AC_ARG_PROGRAM # Automaticly invoked by AM_INIT_AUTOMAKE
AM_SANITY_CHECK AM_SANITY_CHECK
......
...@@ -604,19 +604,13 @@ extern int my_rw_trywrlock(my_rw_lock_t *); ...@@ -604,19 +604,13 @@ extern int my_rw_trywrlock(my_rw_lock_t *);
#define pthread_attr_setstacksize(A,B) pthread_dummy(0) #define pthread_attr_setstacksize(A,B) pthread_dummy(0)
#endif #endif
/* Define mutex types */ /* Define mutex types, see my_thr_init.c */
#define MY_MUTEX_INIT_SLOW NULL #define MY_MUTEX_INIT_SLOW NULL
#define MY_MUTEX_INIT_FAST NULL
#define MY_MUTEX_INIT_ERRCHK NULL
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
extern pthread_mutexattr_t my_fast_mutexattr; extern pthread_mutexattr_t my_fast_mutexattr;
#undef MY_MUTEX_INIT_FAST
#define MY_MUTEX_INIT_FAST &my_fast_mutexattr #define MY_MUTEX_INIT_FAST &my_fast_mutexattr
#endif #else
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP #define MY_MUTEX_INIT_FAST NULL
extern pthread_mutexattr_t my_errchk_mutexattr;
#undef MY_INIT_MUTEX_ERRCHK
#define MY_INIT_MUTEX_ERRCHK &my_errchk_mutexattr
#endif #endif
extern my_bool my_thread_global_init(void); extern my_bool my_thread_global_init(void);
......
...@@ -40,9 +40,6 @@ pthread_mutex_t LOCK_gethostbyname_r; ...@@ -40,9 +40,6 @@ pthread_mutex_t LOCK_gethostbyname_r;
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_t my_fast_mutexattr; pthread_mutexattr_t my_fast_mutexattr;
#endif #endif
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
pthread_mutexattr_t my_errchk_mutexattr;
#endif
/* /*
initialize thread environment initialize thread environment
...@@ -62,19 +59,21 @@ my_bool my_thread_global_init(void) ...@@ -62,19 +59,21 @@ my_bool my_thread_global_init(void)
fprintf(stderr,"Can't initialize threads: error %d\n",errno); fprintf(stderr,"Can't initialize threads: error %d\n",errno);
return 1; return 1;
} }
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_init(&my_fast_mutexattr);
/* /*
Note that the following statement may give a compiler warning under Set mutex type to "fast" a.k.a "adaptive"
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 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); pthread_mutexattr_init(&my_fast_mutexattr);
#endif pthread_mutexattr_settype(&my_fast_mutexattr,
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_MUTEX_ADAPTIVE_NP);
pthread_mutexattr_init(&my_errchk_mutexattr);
pthread_mutexattr_setkind_np(&my_errchk_mutexattr,
PTHREAD_MUTEX_ERRORCHECK_NP);
#endif #endif
pthread_mutex_init(&THR_LOCK_malloc,MY_MUTEX_INIT_FAST); pthread_mutex_init(&THR_LOCK_malloc,MY_MUTEX_INIT_FAST);
...@@ -108,9 +107,6 @@ void my_thread_global_end(void) ...@@ -108,9 +107,6 @@ void my_thread_global_end(void)
pthread_key_delete(THR_KEY_mysys); pthread_key_delete(THR_KEY_mysys);
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP #ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
pthread_mutexattr_destroy(&my_fast_mutexattr); pthread_mutexattr_destroy(&my_fast_mutexattr);
#endif
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
pthread_mutexattr_destroy(&my_errchk_mutexattr);
#endif #endif
pthread_mutex_destroy(&THR_LOCK_malloc); pthread_mutex_destroy(&THR_LOCK_malloc);
pthread_mutex_destroy(&THR_LOCK_open); pthread_mutex_destroy(&THR_LOCK_open);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment