X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fperlhost.h;h=a3f4c28350c10ceb9190cc738ec5c45b14646422;hb=99efa25c11975a5bbacdb6c324b19bda9d8b8b89;hp=93cb4580b0b7c5c928a2680ba2716653c20511dd;hpb=ad4e2db76417dc3c9feb57d207a4bcf3bf734aaf;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/perlhost.h b/win32/perlhost.h index 93cb458..a3f4c28 100644 --- a/win32/perlhost.h +++ b/win32/perlhost.h @@ -486,6 +486,12 @@ PerlEnvSiteLibPath(struct IPerlEnv* piPerl, char *pl) return g_win32_get_sitelib(pl); } +void +PerlEnvGetChildIO(struct IPerlEnv* piPerl, child_IO_table* ptr) +{ + win32_get_child_IO(ptr); +} + struct IPerlEnv perlEnv = { PerlEnvGetenv, @@ -500,6 +506,7 @@ struct IPerlEnv perlEnv = PerlEnvOsId, PerlEnvLibPath, PerlEnvSiteLibPath, + PerlEnvGetChildIO, }; #undef IPERL2HOST @@ -1628,7 +1635,7 @@ PerlProcSignal(struct IPerlProc* piPerl, int sig, Sighandler_t subcode) } #ifdef USE_ITHREADS -static DWORD WINAPI +static THREAD_RET_TYPE win32_start_child(LPVOID arg) { PerlInterpreter *my_perl = (PerlInterpreter*)arg; @@ -1643,7 +1650,7 @@ win32_start_child(LPVOID arg) #endif - PERL_SET_INTERP(my_perl); + PERL_SET_THX(my_perl); /* set $$ to pseudo id */ #ifdef PERL_SYNC_FORK @@ -1738,11 +1745,16 @@ PerlProcFork(struct IPerlProc* piPerl) new_perl->Isys_intern.internal_host = h; # ifdef PERL_SYNC_FORK id = win32_start_child((LPVOID)new_perl); - PERL_SET_INTERP(aTHXo); + PERL_SET_THX(aTHXo); # else +# ifdef USE_RTL_THREAD_API + handle = (HANDLE)_beginthreadex((void*)NULL, 0, win32_start_child, + (void*)new_perl, 0, (unsigned*)&id); +# else handle = CreateThread(NULL, 0, win32_start_child, (LPVOID)new_perl, 0, &id); - PERL_SET_INTERP(aTHXo); +# endif + PERL_SET_THX(aTHXo); /* XXX perl_clone*() set TLS */ if (!handle) Perl_croak(aTHX_ "panic: pseudo fork() failed"); w32_pseudo_child_handles[w32_num_pseudo_children] = handle;