X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=thread.h;h=3eb061a22a2ee7e446864a2ec070e8bf8e128705;hb=7060ecfedfb01287e3f9f9ed6ddd6c3506414a16;hp=66176a8dfc8c0c4a3261738c2be8b59f80ce710b;hpb=837485b6cd4b757519a4ac6f03f3857c2fcf4844;p=p5sagit%2Fp5-mst-13.2.git diff --git a/thread.h b/thread.h index 66176a8..3eb061a 100644 --- a/thread.h +++ b/thread.h @@ -4,6 +4,7 @@ # include #else +#ifndef DJGPP /* POSIXish threads */ #ifdef OLD_PTHREADS_API # define pthread_mutexattr_init(a) pthread_mutexattr_create(a) @@ -22,6 +23,7 @@ # define pthread_condattr_default NULL #endif /* OLD_PTHREADS_API */ #endif +#endif #ifdef PTHREADS_CREATED_JOINABLE # define ATTR_JOINABLE PTHREAD_CREATE_JOINABLE @@ -34,10 +36,12 @@ #endif #ifndef YIELD -# ifdef HAS_PTHREAD_YIELD -# define YIELD pthread_yield() -# else +# ifdef HAS_SCHED_YIELD # define YIELD sched_yield() +# else +# ifdef HAS_PTHREAD_YIELD +# define YIELD pthread_yield() +# endif # endif #endif @@ -114,7 +118,7 @@ #ifndef SET_THR #define SET_THR(t) \ STMT_START { \ - if (pthread_setspecific(thr_key, (void *) (t))) \ + if (pthread_setspecific(PL_thr_key, (void *) (t))) \ croak("panic: pthread_setspecific"); \ } STMT_END #endif /* SET_THR */ @@ -124,7 +128,7 @@ struct perl_thread *getTHR _((void)); # define THR getTHR() # else -# define THR ((struct perl_thread *) pthread_getspecific(thr_key)) +# define THR ((struct perl_thread *) pthread_getspecific(PL_thr_key)) # endif /* OLD_PTHREADS_API */ #endif /* THR */ @@ -137,7 +141,7 @@ struct perl_thread *getTHR _((void)); */ #ifndef dTHR # define dTHR \ - struct perl_thread *thr = threadnum? THR : (struct perl_thread*)SvPVX(thrsv) + struct perl_thread *thr = PL_threadnum? THR : (struct perl_thread*)SvPVX(PL_thrsv) #endif /* dTHR */ #ifndef INIT_THREADS @@ -159,14 +163,14 @@ struct perl_thread *getTHR _((void)); */ #define LOCK_SV_MUTEX \ STMT_START { \ - if (threadnum) \ - MUTEX_LOCK(&sv_mutex); \ + if (PL_threadnum) \ + MUTEX_LOCK(&PL_sv_mutex); \ } STMT_END #define UNLOCK_SV_MUTEX \ STMT_START { \ - if (threadnum) \ - MUTEX_UNLOCK(&sv_mutex); \ + if (PL_threadnum) \ + MUTEX_UNLOCK(&PL_sv_mutex); \ } STMT_END #ifndef THREAD_RET_TYPE @@ -190,7 +194,7 @@ struct perl_thread *getTHR _((void)); #define ThrSETSTATE(t, s) STMT_START { \ (t)->flags &= ~THRf_STATE_MASK; \ (t)->flags |= (s); \ - DEBUG_L(PerlIO_printf(PerlIO_stderr(), \ + DEBUG_S(PerlIO_printf(PerlIO_stderr(), \ "thread %p set to state %d\n", (t), (s))); \ } STMT_END @@ -223,7 +227,7 @@ typedef struct condpair { #define THR /* Rats: if dTHR is just blank then the subsequent ";" throws an error */ #ifdef WIN32 -#define dTHR +#define dTHR extern int Perl___notused #else #define dTHR extern int errno #endif