Make better use of GNU Pth -- patch by Andy Dustman.

I can't test this, so I'm just checking it in with blind faith in Andy.
I've tested that it doesn't broeak a non-Pth build on Linux.

Changes include:

- There's a --with-pth configure option.

- Instead of _GNU_PTH, we test for HAVE_PTH.

- Better signal handling.

- (The config.h.in file is regenerated in a slightly different order.)
This commit is contained in:
Guido van Rossum 2000-09-19 00:46:46 +00:00
parent 0344424793
commit 9e8181b809
7 changed files with 521 additions and 558 deletions

View File

@ -111,7 +111,7 @@
#define Py_file_input 257
#define Py_eval_input 258
#ifdef _GNU_PTH
#ifdef HAVE_PTH
/* GNU pth user-space thread support */
#include <pth.h>
#endif

View File

@ -62,6 +62,9 @@
handler ignores signals if getpid() isn't the same as in the main
thread. XXX This is a hack.
GNU pth is a user-space threading library, and as such, all threads
run within the same process. In this case, if the currently running
thread is not the main_thread, send the signal to the main_thread.
*/
#ifdef WITH_THREAD
@ -109,6 +112,12 @@ static void
signal_handler(int sig_num)
{
#ifdef WITH_THREAD
#ifdef WITH_PTH
if (PyThread_get_thread_ident() != main_thread) {
pth_raise(*(pth_t *) main_thread, sig_num);
return;
}
#endif
/* See NOTES section above */
if (getpid() == main_pid) {
#endif

View File

@ -109,13 +109,14 @@ void PyThread_init_thread(void)
#include "thread_lwp.h"
#endif
#ifdef _GNU_PTH
#ifdef HAVE_PTH
#include "thread_pth.h"
#else
#undef _POSIX_THREADS
#endif
#ifdef _POSIX_THREADS
#include "thread_pthread.h"
#endif
#endif
#ifdef C_THREADS
#include "thread_cthread.h"

View File

@ -35,9 +35,6 @@
This is the case on Motorola V4 (R40V4.2) */
#undef GETTIMEOFDAY_NO_TZ
/* Define if you have GNU PTH threads */
#undef _GNU_PTH
/* Define this if your time.h defines altzone */
#undef HAVE_ALTZONE
@ -65,6 +62,9 @@
/* Define if your compiler supports function prototypes */
#undef HAVE_PROTOTYPES
/* Define if you have GNU PTH threads */
#undef HAVE_PTH
/* Define if your compiler supports variable length function prototypes
(e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
#undef HAVE_STDARG_PROTOTYPES

View File

@ -103,9 +103,6 @@
This is the case on Motorola V4 (R40V4.2) */
#undef GETTIMEOFDAY_NO_TZ
/* Define if you have GNU PTH threads */
#undef _GNU_PTH
/* Define this if your time.h defines altzone */
#undef HAVE_ALTZONE
@ -130,6 +127,9 @@
/* Define if your compiler supports function prototypes */
#undef HAVE_PROTOTYPES
/* Define if you have GNU PTH threads */
#undef HAVE_PTH
/* Define if your compiler supports variable length function prototypes
(e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
#undef HAVE_STDARG_PROTOTYPES
@ -272,6 +272,9 @@
/* The number of bytes in a void *. */
#undef SIZEOF_VOID_P
/* Define if you have the _getpty function. */
#undef HAVE__GETPTY
/* Define if you have the alarm function. */
#undef HAVE_ALARM
@ -359,9 +362,6 @@
/* Define if you have the getpid function. */
#undef HAVE_GETPID
/* Define if you have the _getpty function. */
#undef HAVE__GETPTY
/* Define if you have the getpwent function. */
#undef HAVE_GETPWENT
@ -521,14 +521,14 @@
/* Define if you have the waitpid function. */
#undef HAVE_WAITPID
/* Define if you have the <db_185.h> header file. */
#undef HAVE_DB_185_H
/* Define if you have the <db.h> header file. */
#undef HAVE_DB_H
/* Define if you have the <db1/ndbm.h> header file. */
#undef HAVE_DB1_NDBM_H
/* Define if you have the <db.h> header file. */
#undef HAVE_DB_H
/* Define if you have the <db_185.h> header file. */
#undef HAVE_DB_185_H
/* Define if you have the <dirent.h> header file. */
#undef HAVE_DIRENT_H

1022
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -745,6 +745,15 @@ else
AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
AC_DEFINE(C_THREADS)
LIBOBJS="$LIBOBJS thread.o"],[
AC_MSG_CHECKING(for --with-pth)
AC_ARG_WITH(pth,
[ --with-pth use GNU pth threading libraries], [
AC_MSG_RESULT($withval)
AC_DEFINE(WITH_THREAD)
AC_DEFINE(HAVE_PTH)
LIBS="-lpth $LIBS"
LIBOBJS="$LIBOBJS thread.o"],[
AC_MSG_RESULT(no)
AC_CHECK_LIB(pthread, pthread_create, [AC_DEFINE(WITH_THREAD)
AC_DEFINE(_POSIX_THREADS)
LIBS="-lpthread $LIBS"
@ -767,10 +776,6 @@ else
AC_DEFINE(_POSIX_THREADS)
LIBS="$LIBS -lthread"
LIBOBJS="$LIBOBJS thread.o"], [
AC_CHECK_LIB(pth, pth_init, [AC_DEFINE(WITH_THREAD)
AC_DEFINE(_GNU_PTH)
LIBS="-lpth $LIBS"
LIBOBJS="$LIBOBJS thread.o"],[
AC_CHECK_LIB(cma, pthread_create, [AC_DEFINE(WITH_THREAD)
AC_DEFINE(_POSIX_THREADS)
LIBS="$LIBS -lcma"