Kerry Clark ([EMAIL PROTECTED]) wrote:
> Yes this was using the thread option. I can send
> a list of the places I added in the dTHX; statements,
> if that would help. I'm just trying out threads to
> see how far I can get.
I put in a bunch of the dTHX's too, but wanted to actually get
a "build with threads" to work before sending out a patch. But it
doesn't look like that's going to happen soon, so a patch follows.
Use only after the VMSPIPE patch, if you're building with threads.
So far, no go. I get compilation errors in sockadapt.c It seems that
a #define of "croak" is missing from embed.h.
It's not clear (to me) if the calls need to be changed to
"croak_nocontext" or whether there is some problem in the preprocessor
definitions that is preventing an otherwise valide definition of
"croak" from being used.
Then later on the build completely dies in gv.c, with:
MUTEX_INIT(CvMUTEXP(GvCV(gv)));
............^
%CC-E-NOCONVERT, In this statement, "((void ...)0)" is of type "pointer to void", and
may not be converted to "struct CMA_T_HANDLE".
at line number 131 in file DISK$AXPVMSSYS:[PERL.PERL-5_6_0X]GV.C;1
My *guess* is that there's some sort of USE_ANTIQUE_DEC_PTHREADS flag
that I'm neglecting to set.
--- vms/vms.c-pre_dthx Fri Apr 28 10:12:38 2000
+++ vms/vms.c Fri Apr 28 10:12:21 2000
@@ -1144,6 +1144,7 @@
static void
popen_completion_ast(pInfo info)
{
+ dTHX;
pInfo i = open_pipes;
int iss;
@@ -1270,6 +1271,7 @@
static pPipe
pipe_tochild_setup(char *rmbx, char *wmbx)
{
+ dTHX;
pPipe p;
pCBuf b;
char mbx1[64], mbx2[64];
@@ -1319,6 +1321,7 @@
static void
pipe_tochild1_ast(pPipe p)
{
+ dTHX;
pCBuf b = p->curr;
int iss = p->iosb.status;
int eof = (iss == SS$_ENDOFFILE);
@@ -1378,6 +1381,7 @@
static void
pipe_tochild2_ast(pPipe p)
{
+ dTHX;
pCBuf b = p->curr2;
int iss = p->iosb2.status;
int n = sizeof(CBuf) + p->bufsize;
@@ -1432,6 +1436,7 @@
static pPipe
pipe_infromchild_setup(char *rmbx, char *wmbx)
{
+ dTHX;
pPipe p;
char mbx1[64], mbx2[64];
struct dsc$descriptor_s d_mbx1 = {sizeof mbx1, DSC$K_DTYPE_T,
@@ -1460,6 +1465,7 @@
static void
pipe_infromchild_ast(pPipe p)
{
+ dTHX;
int iss = p->iosb.status;
int eof = (iss == SS$_ENDOFFILE);
int myeof = (eof && (p->iosb.dvispec == mypid || p->iosb.dvispec == 0));
@@ -1537,6 +1543,7 @@
static pPipe
pipe_mbxtofd_setup(int fd, char *out)
{
+ dTHX;
pPipe p;
char mbx[64];
unsigned long dviitm = DVI$_DEVBUFSIZ;
@@ -1577,6 +1584,7 @@
static void
pipe_mbxtofd_ast(pPipe p)
{
+ dTHX;
int iss = p->iosb.status;
int done = p->info->done;
int iss2;
@@ -2058,6 +2066,7 @@
/*{{{ I32 my_pclose(FILE *fp)*/
I32 Perl_my_pclose(pTHX_ FILE *fp)
{
+ dTHX;
pInfo info, last = NULL;
unsigned long int retsts;
int done, iss;
--
Drexel University \V --Chuck Lane
----------------->--------*------------<[EMAIL PROTECTED]
(215) 895-1545 / \ Particle Physics [EMAIL PROTECTED]
FAX: (215) 895-5934 /~~~~~~~~~~~ [EMAIL PROTECTED]