|  | 
 | /* Thread package. | 
 |    This is intended to be usable independently from Python. | 
 |    The implementation for system foobar is in a file thread_foobar.h | 
 |    which is included by this file dependent on config settings. | 
 |    Stuff shared by all thread_*.h files is collected here. */ | 
 |  | 
 | #include "pyconfig.h" | 
 |  | 
 | /* pyconfig.h may or may not define DL_IMPORT */ | 
 | #ifndef DL_IMPORT	/* declarations for DLL import/export */ | 
 | #define DL_IMPORT(RTYPE) RTYPE | 
 | #endif | 
 |  | 
 | #ifndef DONT_HAVE_STDIO_H | 
 | #include <stdio.h> | 
 | #endif | 
 |  | 
 | #ifdef HAVE_STDLIB_H | 
 | #include <stdlib.h> | 
 | #else | 
 | #ifdef Py_DEBUG | 
 | extern char *getenv(const char *); | 
 | #endif | 
 | #endif | 
 |  | 
 | #ifdef HAVE_UNISTD_H | 
 | #include <unistd.h> | 
 | #endif | 
 |  | 
 | #ifdef __DGUX | 
 | #define _USING_POSIX4A_DRAFT6 | 
 | #endif | 
 |  | 
 | #ifdef __sgi | 
 | #ifndef HAVE_PTHREAD_H /* XXX Need to check in configure.in */ | 
 | #undef _POSIX_THREADS | 
 | #endif | 
 | #endif | 
 |  | 
 | #include "pythread.h" | 
 |  | 
 | #ifdef __ksr__ | 
 | #define _POSIX_THREADS | 
 | #endif | 
 |  | 
 | #ifndef _POSIX_THREADS | 
 |  | 
 | #ifdef __sgi | 
 | #define SGI_THREADS | 
 | #endif | 
 |  | 
 | #ifdef HAVE_THREAD_H | 
 | #define SOLARIS_THREADS | 
 | #endif | 
 |  | 
 | #if defined(sun) && !defined(SOLARIS_THREADS) | 
 | #define SUN_LWP | 
 | #endif | 
 |  | 
 | #if defined(__MWERKS__) && !defined(__BEOS__) | 
 | #define _POSIX_THREADS | 
 | #endif | 
 |  | 
 | #endif /* _POSIX_THREADS */ | 
 |  | 
 |  | 
 | #ifdef Py_DEBUG | 
 | static int thread_debug = 0; | 
 | #define dprintf(args)	((thread_debug & 1) && printf args) | 
 | #define d2printf(args)	((thread_debug & 8) && printf args) | 
 | #else | 
 | #define dprintf(args) | 
 | #define d2printf(args) | 
 | #endif | 
 |  | 
 | static int initialized; | 
 |  | 
 | static void PyThread__init_thread(void); /* Forward */ | 
 |  | 
 | void PyThread_init_thread(void) | 
 | { | 
 | #ifdef Py_DEBUG | 
 | 	char *p = getenv("THREADDEBUG"); | 
 |  | 
 | 	if (p) { | 
 | 		if (*p) | 
 | 			thread_debug = atoi(p); | 
 | 		else | 
 | 			thread_debug = 1; | 
 | 	} | 
 | #endif /* Py_DEBUG */ | 
 | 	if (initialized) | 
 | 		return; | 
 | 	initialized = 1; | 
 | 	dprintf(("PyThread_init_thread called\n")); | 
 | 	PyThread__init_thread(); | 
 | } | 
 |  | 
 | #ifdef SGI_THREADS | 
 | #include "thread_sgi.h" | 
 | #endif | 
 |  | 
 | #ifdef SOLARIS_THREADS | 
 | #include "thread_solaris.h" | 
 | #endif | 
 |  | 
 | #ifdef SUN_LWP | 
 | #include "thread_lwp.h" | 
 | #endif | 
 |  | 
 | #ifdef HAVE_PTH | 
 | #include "thread_pth.h" | 
 | #endif | 
 |  | 
 | #ifdef _POSIX_THREADS | 
 | #include "thread_pthread.h" | 
 | #endif | 
 |  | 
 | #ifdef C_THREADS | 
 | #include "thread_cthread.h" | 
 | #endif | 
 |  | 
 | #ifdef NT_THREADS | 
 | #include "thread_nt.h" | 
 | #endif | 
 |  | 
 | #ifdef OS2_THREADS | 
 | #include "thread_os2.h" | 
 | #endif | 
 |  | 
 | #ifdef BEOS_THREADS | 
 | #include "thread_beos.h" | 
 | #endif | 
 |  | 
 | #ifdef WINCE_THREADS | 
 | #include "thread_wince.h" | 
 | #endif | 
 |  | 
 | /* | 
 | #ifdef FOOBAR_THREADS | 
 | #include "thread_foobar.h" | 
 | #endif | 
 | */ |