X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/043fec90e88a2e23823af40a5c0b59539fc58069..9f26aead2aa91045336145a3d0f4da3720c0873d:/thread.h diff --git a/thread.h b/thread.h index 03965c8..2603d54 100644 --- a/thread.h +++ b/thread.h @@ -16,8 +16,7 @@ #ifdef WIN32 # include -#else -#ifdef NETWARE +#elif defined(NETWARE) # include #else # ifdef OLD_PTHREADS_API /* Here be dragons. */ @@ -71,7 +70,6 @@ # define pthread_mutexattr_default NULL # define pthread_condattr_default NULL # endif -#endif /* NETWARE */ #endif #ifndef PTHREAD_CREATE @@ -91,10 +89,6 @@ # endif #endif -#ifdef DGUX -# define THREAD_CREATE_NEEDS_STACK (32*1024) -#endif - #ifdef __VMS /* Default is 1024 on VAX, 8192 otherwise */ # ifdef __ia64 @@ -151,7 +145,7 @@ } STMT_END #define THREAD_CREATE(thr, f) (thr->self = cthread_fork(f, thr), 0) -#define THREAD_POST_CREATE(thr) +#define THREAD_POST_CREATE(thr) NOOP #define THREAD_RET_TYPE any_t #define THREAD_RET_CAST(x) ((any_t) x) @@ -173,16 +167,12 @@ #ifndef YIELD # ifdef SCHED_YIELD # define YIELD SCHED_YIELD -# else -# ifdef HAS_SCHED_YIELD -# define YIELD sched_yield() -# else -# ifdef HAS_PTHREAD_YIELD +# elif defined(HAS_SCHED_YIELD) +# define YIELD sched_yield() +# elif defined(HAS_PTHREAD_YIELD) /* pthread_yield(NULL) platforms are expected * to have #defined YIELD for themselves. */ -# define YIELD pthread_yield() -# endif -# endif +# define YIELD pthread_yield() # endif #endif @@ -212,10 +202,18 @@ } STMT_END # endif +# ifdef PERL_TSA_ACTIVE +# define perl_pthread_mutex_lock(m) perl_tsa_mutex_lock(m) +# define perl_pthread_mutex_unlock(m) perl_tsa_mutex_unlock(m) +# else +# define perl_pthread_mutex_lock(m) pthread_mutex_lock(m) +# define perl_pthread_mutex_unlock(m) pthread_mutex_unlock(m) +# endif + # define MUTEX_LOCK(m) \ STMT_START { \ int _eC_; \ - if ((_eC_ = pthread_mutex_lock((m)))) \ + if ((_eC_ = perl_pthread_mutex_lock((m)))) \ Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END @@ -223,7 +221,7 @@ # define MUTEX_UNLOCK(m) \ STMT_START { \ int _eC_; \ - if ((_eC_ = pthread_mutex_unlock((m)))) \ + if ((_eC_ = perl_pthread_mutex_unlock((m)))) \ Perl_croak_nocontext("panic: MUTEX_UNLOCK (%d) [%s:%d]", \ _eC_, __FILE__, __LINE__); \ } STMT_END @@ -340,7 +338,7 @@ # define ALLOC_THREAD_KEY \ STMT_START { \ if (pthread_key_create(&PL_thr_key, 0)) { \ - write(2, STR_WITH_LEN("panic: pthread_key_create failed\n")); \ + PERL_UNUSED_RESULT(write(2, STR_WITH_LEN("panic: pthread_key_create failed\n"))); \ exit(1); \ } \ } STMT_END @@ -374,47 +372,47 @@ #endif /* USE_ITHREADS */ #ifndef MUTEX_LOCK -# define MUTEX_LOCK(m) +# define MUTEX_LOCK(m) NOOP #endif #ifndef MUTEX_UNLOCK -# define MUTEX_UNLOCK(m) +# define MUTEX_UNLOCK(m) NOOP #endif #ifndef MUTEX_INIT -# define MUTEX_INIT(m) +# define MUTEX_INIT(m) NOOP #endif #ifndef MUTEX_DESTROY -# define MUTEX_DESTROY(m) +# define MUTEX_DESTROY(m) NOOP #endif #ifndef COND_INIT -# define COND_INIT(c) +# define COND_INIT(c) NOOP #endif #ifndef COND_SIGNAL -# define COND_SIGNAL(c) +# define COND_SIGNAL(c) NOOP #endif #ifndef COND_BROADCAST -# define COND_BROADCAST(c) +# define COND_BROADCAST(c) NOOP #endif #ifndef COND_WAIT -# define COND_WAIT(c, m) +# define COND_WAIT(c, m) NOOP #endif #ifndef COND_DESTROY -# define COND_DESTROY(c) +# define COND_DESTROY(c) NOOP #endif #ifndef LOCK_DOLLARZERO_MUTEX -# define LOCK_DOLLARZERO_MUTEX +# define LOCK_DOLLARZERO_MUTEX NOOP #endif #ifndef UNLOCK_DOLLARZERO_MUTEX -# define UNLOCK_DOLLARZERO_MUTEX +# define UNLOCK_DOLLARZERO_MUTEX NOOP #endif /* THR, SET_THR, and dTHR are there for compatibility with old versions */ @@ -435,11 +433,5 @@ #endif /* - * Local variables: - * c-indentation-style: bsd - * c-basic-offset: 4 - * indent-tabs-mode: nil - * End: - * * ex: set ts=8 sts=4 sw=4 et: */