SV_to_ithread(pTHX_ SV *sv)
{
ithread *thread;
+#ifdef OEMVS
+ void *ptr;
+#endif
if (SvROK(sv))
{
thread = INT2PTR(ithread*, SvIV(SvRV(sv)));
}
else
{
+#ifdef OEMVS
+ PERL_THREAD_GETSPECIFIC(self_key,ptr);
+ thread = (ithread *) ptr;
+#else
PERL_THREAD_GETSPECIFIC(self_key,thread);
+#endif
}
return thread;
}
Perl_ithread_self (pTHX_ SV *obj, char* Class)
{
ithread *thread;
+#ifdef OEMVS
+ void *ptr;
+ PERL_THREAD_GETSPECIFIC(self_key,ptr);
+ thread = (ithread *) ptr;
+#else
PERL_THREAD_GETSPECIFIC(self_key,thread);
+#endif
return ithread_to_SV(aTHX_ obj, thread, Class, TRUE);
}
#define isBLANK_LC_utf8(c) isBLANK(c) /* could be wrong */
#ifdef EBCDIC
-# define toCTRL(c) Perl_ebcdic_control(c)
+# ifdef PERL_IMPLICIT_CONTEXT
+# define toCTRL(c) Perl_ebcdic_control(aTHX_ c)
+# else
+# define toCTRL Perl_ebcdic_control
+# endif
#else
/* This conversion works both ways, strangely enough. */
# define toCTRL(c) (toUPPER(c) ^ 64)
'') ldlibpthname=LIBPATH ;;
esac
+# The folowing should always be used
+d_oldpthreads='define'
+
# Header files to include.
-# You can override these with Configure -Ui_time -Ui_systime.
+# You can override these with Configure -Ui_time -Ui_systime -Dd_pthread_atfork.
case "$i_time" in
'') i_time='define' ;;
esac
case "$i_systime" in
'') i_systime='define' ;;
esac
+case "$d_pthread_atfork" in
+'') d_pthread_atfork='undef' ;;
+esac
case "$d_pthread_atfork" in
'') d_pthread_atfork='undef' ;;
esac
# ifdef __OPEN_VM
# define pthread_addr_t void *
# endif
+# ifdef OEMVS
+# define pthread_addr_t void *
+# define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t)
+# define pthread_create(t,a,s,d) pthread_create(t,&(a),s,d)
+# define pthread_keycreate pthread_key_create
+# endif
# ifdef VMS
# define pthread_attr_init(a) pthread_attr_create(a)
# define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_setdetach_np(a,s)
# define pthread_mutexattr_init(a) pthread_mutexattr_create(a)
# define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t)
# endif
-# if defined(DJGPP) || defined(__OPEN_VM)
+# if defined(DJGPP) || defined(__OPEN_VM) || defined(OEMVS)
# define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,&(s))
# define YIELD pthread_yield(NULL)
# endif
#ifdef HAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP
# define PTHREAD_GETSPECIFIC(key) pthread_unchecked_getspecific_np(key)
#else
-# ifdef OEMVS
-# define PTHREAD_GETSPECIFIC(key) pthread_getspecific_d8_np(key)
-# else
# define PTHREAD_GETSPECIFIC(key) pthread_getspecific(key)
-# endif
#endif
#ifndef PERL_GET_CONTEXT