foreach my $symbol (qw(
boot_DynaLoader
Perl_init_os_extras
+ Perl_thread_create
Perl_win32_init
RunPerl
win32_errno
#ifndef ALLOC_THREAD_KEY
# define ALLOC_THREAD_KEY \
STMT_START { \
- if (pthread_key_create(&PL_thr_key, 0)) \
- Perl_croak(aTHX_ "panic: pthread_key_create"); \
+ if (pthread_key_create(&PL_thr_key, 0)) { \
+ fprintf(stderr, "panic: pthread_key_create"); \
+ exit(1); \
+ } \
} STMT_END
#endif
Perl_croak_nocontext("panic: pthread_getspecific");
return (void*)t;
# else
+# ifdef I_MACH_CTHREADS
+ return (void*)cthread_data(cthread_self());
+# else
return (void*)pthread_getspecific(PL_thr_key);
# endif
+# endif
#else
return (void*)NULL;
#endif
Perl_set_context(void *t)
{
#if defined(USE_THREADS) || defined(USE_ITHREADS)
+# ifdef I_MACH_CTHREADS
+ cthread_set_data(cthread_self(), t);
+# else
if (pthread_setspecific(PL_thr_key, t))
Perl_croak_nocontext("panic: pthread_setspecific");
+# endif
#endif
}
WIN32_SRC = \
.\win32.c \
- .\win32sck.c
-
-!IF "$(USE_5005THREADS)" == "define"
-WIN32_SRC = $(WIN32_SRC) .\win32thread.c
-!ENDIF
+ .\win32sck.c \
+ .\win32thread.c
!IF "$(CRYPT_SRC)" != ""
WIN32_SRC = $(WIN32_SRC) .\$(CRYPT_SRC)
WIN32_SRC = \
.\win32.c \
- .\win32sck.c
-
-.IF "$(USE_5005THREADS)" == "define"
-WIN32_SRC += .\win32thread.c
-.ENDIF
+ .\win32sck.c \
+ .\win32thread.c
.IF "$(CRYPT_SRC)" != ""
WIN32_SRC += .\$(CRYPT_SRC)
# define F_OK 0
#endif
+#define PERL_GET_CONTEXT_DEFINED
+
/* Compiler-specific stuff. */
#ifdef __BORLANDC__ /* Borland C++ */
#define PERL_SET_CONTEXT(t) Perl_set_context(t)
#endif
-#define PERL_GET_CONTEXT_DEFINED
-
#if defined(USE_THREADS)
struct perl_thread;
int Perl_thread_create (struct perl_thread *thr, thread_func_t *fn);
#define INIT_THREADS NOOP
#define ALLOC_THREAD_KEY \
STMT_START { \
- if ((PL_thr_key = TlsAlloc()) == TLS_OUT_OF_INDEXES) \
- Perl_croak_nocontext("panic: TlsAlloc"); \
+ if ((PL_thr_key = TlsAlloc()) == TLS_OUT_OF_INDEXES) { \
+ fprintf(stderr,"panic: TlsAlloc"); \
+ exit(1); \
+ } \
} STMT_END
#if defined(USE_RTL_THREAD_API) && !defined(_MSC_VER)