Commit 7e04d257 authored by unknown's avatar unknown
Browse files

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 20cf8f82
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ case $FLAG in
	/\(\):/ {
	    pr = substr($2, 1, 2);
	    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
#	parsing is much easier
@@ -97,7 +97,7 @@ case $FLAG in
	/\(\):/ {
	    pr = substr($2, 1, 2);
	    if (pr == "vi" || pr == "em" || pr == "ed") {
		name = substr($2, 1, length($2) - 3);
		name = substr($2, 1, index($2,"(") - 1);
		uname = "";
		fname = "";
		for (i = 1; i <= length(name); i++) {
@@ -117,6 +117,7 @@ case $FLAG in
		printf("      \"");
		for (i = 2; i < NF; i++)
		    printf("%s ", $i);
                sub("\r", "", $i);
		printf("%s\" },\n", $i);
		ok = 0;
	    }
@@ -219,7 +220,7 @@ case $FLAG in
	/\(\):/ {
	    pr = substr($2, 1, 2);
	    if (pr == "vi" || pr == "em" || pr == "ed") {
		name = substr($2, 1, length($2) - 3);
		name = substr($2, 1, index($2, "(") - 1);
		fname = "";
		for (i = 1; i <= length(name); i++) {
		    s = substr(name, i, 1);
+1 −1
Original line number Diff line number Diff line
@@ -118,7 +118,7 @@ AC_SUBST(SAVE_LDFLAGS)
AC_SUBST(SAVE_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
AM_SANITY_CHECK
+3 −9
Original line number Diff line number Diff line
@@ -604,19 +604,13 @@ extern int my_rw_trywrlock(my_rw_lock_t *);
#define pthread_attr_setstacksize(A,B) pthread_dummy(0)
#endif

/* Define mutex types */
/* Define mutex types, see my_thr_init.c */
#define MY_MUTEX_INIT_SLOW   NULL
#define MY_MUTEX_INIT_FAST   NULL
#define MY_MUTEX_INIT_ERRCHK NULL
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
extern pthread_mutexattr_t my_fast_mutexattr;
#undef  MY_MUTEX_INIT_FAST
#define MY_MUTEX_INIT_FAST &my_fast_mutexattr
#endif
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
extern pthread_mutexattr_t my_errchk_mutexattr;
#undef MY_INIT_MUTEX_ERRCHK
#define MY_INIT_MUTEX_ERRCHK &my_errchk_mutexattr
#else
#define MY_MUTEX_INIT_FAST   NULL
#endif

extern my_bool my_thread_global_init(void);
+12 −16
Original line number Diff line number Diff line
@@ -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);
@@ -108,9 +107,6 @@ void my_thread_global_end(void)
  pthread_key_delete(THR_KEY_mysys);
#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);