From 90866323e988eded2d449f93e3ad86d3d1542814 Mon Sep 17 00:00:00 2001 From: Ilya Zakharevich Date: Mon, 3 May 1999 18:38:50 -0400 Subject: [PATCH] Quickier thread-specific data on OS/2 Message-Id: <199905040238.WAA01865@monk.mps.ohio-state.edu> p4raw-id: //depot/perl@3369 --- os2/os2ish.h | 13 ++++++++++--- os2/os2thread.h | 4 ++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/os2/os2ish.h b/os2/os2ish.h index 97b489b..cfd13c8 100644 --- a/os2/os2ish.h +++ b/os2/os2ish.h @@ -148,10 +148,17 @@ extern int rc; #define dTHR struct thread *thr = THR */ -#define pthread_getspecific(k) (*_threadstore()) -#define pthread_setspecific(k,v) (*_threadstore()=v,0) +#ifdef USE_SLOW_THREAD_SPECIFIC +# define pthread_getspecific(k) (*_threadstore()) +# define pthread_setspecific(k,v) (*_threadstore()=v,0) +# define pthread_key_create(keyp,flag) (*keyp=_gettid(),0) +#else +# define pthread_getspecific(k) (*(k)) +# define pthread_setspecific(k,v) (*(k)=(v),0) +# define pthread_key_create(keyp,flag) (DosAllocThreadLocalMemory(1,(U32*)keyp) ? croak("LocalMemory"),1 : 0) +#endif +#define pthread_key_delete(keyp) #define pthread_self() _gettid() -#define pthread_key_create(keyp,flag) (*keyp=_gettid(),0) #define YIELD DosSleep(0) #ifdef PTHREADS_INCLUDED /* For ./x2p stuff. */ diff --git a/os2/os2thread.h b/os2/os2thread.h index d56fe16..9516ddd 100644 --- a/os2/os2thread.h +++ b/os2/os2thread.h @@ -8,7 +8,11 @@ typedef _rmutex perl_mutex; /*typedef HEV perl_cond;*/ /* Will include os2.h into all C files. */ typedef unsigned long perl_cond; +#ifdef USE_SLOW_THREAD_SPECIFIC typedef int perl_key; +#else +typedef void** perl_key; +#endif typedef unsigned long pthread_attr_t; #define PTHREADS_INCLUDED -- 2.7.4