/* HP-UX 10.X CMA (Common Multithreaded Architecure) insists that
pthread.h must be included before all other header files.
*/
-#if defined(USE_THREADS) && defined(PTHREAD_H_FIRST)
+#if defined(USE_THREADS) && defined(PTHREAD_H_FIRST) && defined(I_PTHREAD)
# include <pthread.h>
#endif
typedef condition_t perl_cond;
typedef void * perl_key;
# else /* Posix threads */
-# include <pthread.h>
+# ifdef I_PTHREAD
+# include <pthread.h>
+# endif
typedef pthread_t perl_os_thread;
typedef pthread_mutex_t perl_mutex;
typedef pthread_cond_t perl_cond;
# endif
#endif
+#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_GET_THX)
+# ifdef USE_THREADS
+# define PERL_GET_THX THR
+# else
+# ifdef MULTIPLICITY
+# define PERL_GET_THX PERL_GET_INTERP
+# else
+# ifdef PERL_OBJECT
+# define PERL_GET_THX ((CPerlObj*)PERL_GET_INTERP)
+# else
+# define PERL_GET_THX ((void*)0)
+# endif
+# endif
+# endif
+#endif
+
/* Some unistd.h's give a prototype for pause() even though
HAS_PAUSE ends up undefined. This causes the #define
below to be rejected by the compmiler. Sigh.