Change 14195 by jhi@alpha on 2002/01/11 20:07:35

        Integrate perlio;
        A mostly-stable version of "new" Win32 signal/kill support.

Affected files ...

.... //depot/perl/MANIFEST#704 integrate
.... //depot/perl/XSUB.h#62 integrate
.... //depot/perl/mg.c#218 integrate
.... //depot/perl/t/run/kill_perl.t#25 integrate
.... //depot/perl/toke.c#409 integrate
.... //depot/perl/win32/config.bc#119 integrate
.... //depot/perl/win32/config.gc#119 integrate
.... //depot/perl/win32/config.vc#125 integrate
.... //depot/perl/win32/config_H.bc#114 integrate
.... //depot/perl/win32/config_H.gc#109 integrate
.... //depot/perl/win32/config_H.vc#113 integrate
.... //depot/perl/win32/config_h.PL#25 integrate
.... //depot/perl/win32/makefile.mk#216 integrate
.... //depot/perl/win32/win32.c#184 integrate
.... //depot/perl/win32/win32.h#97 integrate

Differences ...

==== //depot/perl/MANIFEST#704 (text) ====
==== //depot/perl/XSUB.h#62 (text) ====
Index: perl/XSUB.h
--- perl/XSUB.h.~1~     Fri Jan 11 13:15:05 2002
+++ perl/XSUB.h Fri Jan 11 13:15:05 2002
@@ -316,6 +316,8 @@
 #      undef setservent
 #endif /* NETWARE */
 
+#    undef  socketpair
+
 #    define mkdir              PerlDir_mkdir
 #    define chdir              PerlDir_chdir
 #    define rmdir              PerlDir_rmdir

==== //depot/perl/mg.c#218 (text) ====
Index: perl/mg.c
--- perl/mg.c.~1~       Fri Jan 11 13:15:05 2002
+++ perl/mg.c   Fri Jan 11 13:15:05 2002
@@ -1073,7 +1073,9 @@
 Signal_t
 Perl_csighandler(int sig)
 {
-#ifndef PERL_OLD_SIGNALS
+#ifdef PERL_GET_SIG_CONTEXT
+    dTHXa(PERL_GET_SIG_CONTEXT);
+#else
     dTHX;
 #endif
 #ifdef FAKE_PERSISTENT_SIGNAL_HANDLERS
@@ -2310,8 +2312,8 @@
 Signal_t
 Perl_sighandler(int sig)
 {
-#if defined(WIN32) && defined(PERL_IMPLICIT_CONTEXT)
-    dTHXa(PL_curinterp);       /* fake TLS, because signals don't do TLS */
+#ifdef PERL_GET_SIG_CONTEXT
+    dTHXa(PERL_GET_SIG_CONTEXT);
 #else
     dTHX;
 #endif
@@ -2324,10 +2326,6 @@
     U32 flags = 0;
     XPV *tXpv = PL_Xpv;
 
-#if defined(WIN32) && defined(PERL_IMPLICIT_CONTEXT)
-    PERL_SET_THX(aTHX);        /* fake TLS, see above */
-#endif
-
     if (PL_savestack_ix + 15 <= PL_savestack_max)
        flags |= 1;
     if (PL_markstack_ptr < PL_markstack_max - 2)
@@ -2481,3 +2479,6 @@
        SvREFCNT_dec(sig_sv);
 #endif
 }
+
+
+

==== //depot/perl/t/run/kill_perl.t#25 (text) ====
==== //depot/perl/toke.c#409 (text) ====
==== //depot/perl/win32/config.bc#119 (text) ====
Index: perl/win32/config.bc
--- perl/win32/config.bc.~1~    Fri Jan 11 13:15:05 2002
+++ perl/win32/config.bc        Fri Jan 11 13:15:05 2002
@@ -86,7 +86,7 @@
 d__fwalk='undef'
 d_access='define'
 d_accessx='undef'
-d_alarm='undef'
+d_alarm='define'
 d_archlib='define'
 d_atolf='undef'
 d_atoll='undef'
@@ -728,10 +728,10 @@
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_name='ZERO NUM01 INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE 
ALRM TERM USR1 USR2 CHLD NUM19 USR3 BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "USR1", "USR2", 
"CHLD", "NUM19", "USR3", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 18 0'
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
20, 21, 22, 23, 24, 25, 18, 0'
+sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM 
+TERM USR1 USR2 CHLD NUM19 USR3 BREAK ABRT STOP NUM24 CONT CLD'
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", 
+"KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "USR1", "USR2", "CHLD", 
+"NUM19", "USR3", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
+sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 18 0'
+sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 18, 0'
 sig_size='27'
 signal_t='void'
 sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'

==== //depot/perl/win32/config.gc#119 (text) ====
Index: perl/win32/config.gc
--- perl/win32/config.gc.~1~    Fri Jan 11 13:15:05 2002
+++ perl/win32/config.gc        Fri Jan 11 13:15:05 2002
@@ -86,7 +86,7 @@
 d__fwalk='undef'
 d_access='define'
 d_accessx='undef'
-d_alarm='undef'
+d_alarm='define'
 d_archlib='define'
 d_atolf='undef'
 d_atoll='undef'
@@ -728,10 +728,10 @@
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_name='ZERO NUM01 INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE 
ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
20, 21, 22, 23, 24, 25, 20, 0'
+sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM 
+TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", 
+"KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", 
+"NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
+sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
+sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 20, 0'
 sig_size='27'
 signal_t='void'
 sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'

==== //depot/perl/win32/config.vc#125 (text) ====
Index: perl/win32/config.vc
--- perl/win32/config.vc.~1~    Fri Jan 11 13:15:05 2002
+++ perl/win32/config.vc        Fri Jan 11 13:15:05 2002
@@ -728,10 +728,10 @@
 shortsize='2'
 shrpenv=''
 shsharp='true'
-sig_name='ZERO NUM01 INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE 
ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
20, 21, 22, 23, 24, 25, 20, 0'
+sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM 
+TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", 
+"KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", 
+"NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
+sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20 0'
+sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 
+20, 21, 22, 23, 24, 25, 20, 0'
 sig_size='27'
 signal_t='void'
 sitearch='~INST_TOP~\site~INST_VER~\lib~INST_ARCH~'

==== //depot/perl/win32/config_H.bc#114 (text+w) ====
Index: perl/win32/config_H.bc
--- perl/win32/config_H.bc.~1~  Fri Jan 11 13:15:05 2002
+++ perl/win32/config_H.bc      Fri Jan 11 13:15:05 2002
@@ -13,7 +13,7 @@
 /*
  * Package name      : perl5
  * Source directory  : 
- * Configuration time: Sat Dec 29 19:18:51 2001
+ * Configuration time: Fri Jan 11 12:16:23 2002
  * Configured by     : nick
  * Target system     : 
  */
@@ -30,7 +30,7 @@
  *     This symbol, if defined, indicates that the alarm routine is
  *     available.
  */
-/*#define HAS_ALARM            /**/
+#define HAS_ALARM              /**/
 
 /* HASATTRIBUTE:
  *     This symbol indicates the C compiler can check for function attributes,
@@ -3082,8 +3082,8 @@
  *     This variable contains the number of elements of the sig_name
  *     and sig_num arrays, excluding the final NULL entry.
  */
-#define SIG_NAME "ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "USR1", "USR2", 
"CHLD", "NUM19", "USR3", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0            
    /**/
-#define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
19, 20, 21, 22, 23, 24, 25, 18, 0           /**/
+#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
+"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "USR1", "USR2", 
+"CHLD", "NUM19", "USR3", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0          
+/**/
+#define SIG_NUM  0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+19, 20, 21, 22, 23, 24, 25, 18, 0          /**/
 #define SIG_SIZE 27                    /**/
 
 /* SITEARCH:

==== //depot/perl/win32/config_H.gc#109 (text+w) ====
Index: perl/win32/config_H.gc
--- perl/win32/config_H.gc.~1~  Fri Jan 11 13:15:05 2002
+++ perl/win32/config_H.gc      Fri Jan 11 13:15:05 2002
@@ -13,7 +13,7 @@
 /*
  * Package name      : perl5
  * Source directory  : 
- * Configuration time: Sat Dec 29 19:14:21 2001
+ * Configuration time: Fri Jan 11 12:16:14 2002
  * Configured by     : nick
  * Target system     : 
  */
@@ -30,7 +30,7 @@
  *     This symbol, if defined, indicates that the alarm routine is
  *     available.
  */
-/*#define HAS_ALARM            /**/
+#define HAS_ALARM              /**/
 
 /* HASATTRIBUTE:
  *     This symbol indicates the C compiler can check for function attributes,
@@ -3082,8 +3082,8 @@
  *     This variable contains the number of elements of the sig_name
  *     and sig_num arrays, excluding the final NULL entry.
  */
-#define SIG_NAME "ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0           
  /**/
-#define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
19, 20, 21, 22, 23, 24, 25, 20, 0           /**/
+#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
+"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
+"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0          
+     /**/
+#define SIG_NUM  0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+19, 20, 21, 22, 23, 24, 25, 20, 0          /**/
 #define SIG_SIZE 27                    /**/
 
 /* SITEARCH:

==== //depot/perl/win32/config_H.vc#113 (text+w) ====
Index: perl/win32/config_H.vc
--- perl/win32/config_H.vc.~1~  Fri Jan 11 13:15:05 2002
+++ perl/win32/config_H.vc      Fri Jan 11 13:15:05 2002
@@ -13,7 +13,7 @@
 /*
  * Package name      : perl5
  * Source directory  : 
- * Configuration time: Tue Jan  8 21:51:07 2002
+ * Configuration time: Fri Jan 11 12:16:33 2002
  * Configured by     : nick
  * Target system     : 
  */
@@ -3082,8 +3082,8 @@
  *     This variable contains the number of elements of the sig_name
  *     and sig_num arrays, excluding the final NULL entry.
  */
-#define SIG_NAME "ZERO", "NUM01", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0           
  /**/
-#define SIG_NUM  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
19, 20, 21, 22, 23, 24, 25, 20, 0           /**/
+#define SIG_NAME "ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", 
+"FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", 
+"NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0          
+     /**/
+#define SIG_NUM  0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
+19, 20, 21, 22, 23, 24, 25, 20, 0          /**/
 #define SIG_SIZE 27                    /**/
 
 /* SITEARCH:

==== //depot/perl/win32/config_h.PL#25 (text) ====
Index: perl/win32/config_h.PL
--- perl/win32/config_h.PL.~1~  Fri Jan 11 13:15:05 2002
+++ perl/win32/config_h.PL      Fri Jan 11 13:15:05 2002
@@ -1,5 +1,11 @@
 #
-use Config;
+BEGIN { warn "Running ".__FILE__."\n" };
+BEGIN 
+ {
+  require "../lib/Config.pm";
+  die "../Config.pm:$@" if $@;
+  Config::->import;
+ }
 use File::Compare qw(compare);
 use File::Copy qw(copy);
 my $name = $0;
@@ -13,6 +19,8 @@
 
 $opt{CONFIG_H} ||= 'config.h';
 
+warn "Writing $opt{CONFIG_H}\n";
+
 my $patchlevel = $opt{INST_VER};
 $patchlevel =~ s|^[\\/]||;
 $patchlevel =~ s|~VERSION~|$Config{version}|g;

==== //depot/perl/win32/makefile.mk#216 (text) ====
Index: perl/win32/makefile.mk
--- perl/win32/makefile.mk.~1~  Fri Jan 11 13:15:05 2002
+++ perl/win32/makefile.mk      Fri Jan 11 13:15:05 2002
@@ -897,10 +897,11 @@
        perl config_sh.PL --cfgsh-option-file $(mktmp $(CFG_VARS)) \
            $(CFGSH_TMPL) > ..\config.sh
        -cd .. && del /f perl.exe
+       -cd .. && del /f perl*.dll
        cd .. && perl configpm
        -del /f $(CFGH_TMPL)
        -mkdir $(COREDIR)
-       -perl -I..\lib config_h.PL "INST_VER=$(INST_VER)"
+       -perl config_h.PL "INST_VER=$(INST_VER)"
        rename config.h $(CFGH_TMPL)
 
 $(CONFIGPM) : $(MINIPERL) ..\config.sh config_h.PL ..\minimod.pl

==== //depot/perl/win32/win32.c#184 (text) ====
Index: perl/win32/win32.c
--- perl/win32/win32.c.~1~      Fri Jan 11 13:15:05 2002
+++ perl/win32/win32.c  Fri Jan 11 13:15:05 2002
@@ -4447,19 +4447,24 @@
      */
 }
 
-static PerlInterpreter* win32_process_perl = NULL;
+PerlInterpreter *
+win32_signal_context(void)
+{
+    dTHX;
+    if (!my_perl) {
+       my_perl = PL_curinterp;
+       PERL_SET_THX(my_perl);
+    } 
+    return my_perl;
+}
 
 BOOL WINAPI 
 win32_ctrlhandler(DWORD dwCtrlType)
 {
-    dTHX;
-    if (!my_perl) {
-       my_perl = win32_process_perl;
-       if (!my_perl) {
-           return FALSE;
-       }
-       PERL_SET_THX(my_perl);
-    }
+    dTHXa(PERL_GET_SIG_CONTEXT);
+
+    if (!my_perl)
+       return FALSE;
 
     switch(dwCtrlType) {
     case CTRL_CLOSE_EVENT:
@@ -4473,12 +4478,12 @@
 
     case CTRL_C_EVENT:
        /*  A CTRL+c signal was received */
-       CALL_FPTR(PL_sighandlerp)(2); /* SIGINT */
+       CALL_FPTR(PL_sighandlerp)(SIGINT); /* SIGINT */
        return TRUE;    
 
     case CTRL_BREAK_EVENT:
        /*  A CTRL+BREAK signal was received */
-       CALL_FPTR(PL_sighandlerp)(3); /* SIGQUIT */
+       CALL_FPTR(PL_sighandlerp)(SIGBREAK); /* unix calls it SIGQUIT */
        return TRUE;    
 
     case CTRL_LOGOFF_EVENT:
@@ -4491,6 +4496,8 @@
       /*  A signal that the system sends to all console processes when the system is 
           shutting down. 
        */
+       CALL_FPTR(PL_sighandlerp)(SIGTERM); 
+       return TRUE;    
        break;  
     default:
        break;  
@@ -4542,10 +4549,10 @@
     w32_num_pseudo_children    = 0;
 #  endif
     w32_init_socktype          = 0;
-    if (!win32_process_perl) {
-       win32_process_perl = my_perl;
+    if (my_perl == PL_curinterp) {
         /* Force C runtime signal stuff to set its console handler */
        signal(SIGINT,SIG_DFL);
+       signal(SIGBREAK,SIG_DFL);
         /* Push our handler on top */
        SetConsoleCtrlHandler(win32_ctrlhandler,TRUE);
     }
@@ -4558,9 +4565,8 @@
     Safefree(w32_perlshell_vec);
     /* NOTE: w32_fdpid is freed by sv_clean_all() */
     Safefree(w32_children);
-    if (my_perl == win32_process_perl) {
+    if (my_perl == PL_curinterp) {
        SetConsoleCtrlHandler(win32_ctrlhandler,FALSE);
-       win32_process_perl = NULL;
     }
 #  ifdef USE_ITHREADS
     Safefree(w32_pseudo_children);

==== //depot/perl/win32/win32.h#97 (text) ====
Index: perl/win32/win32.h
--- perl/win32/win32.h.~1~      Fri Jan 11 13:15:05 2002
+++ perl/win32/win32.h  Fri Jan 11 13:15:05 2002
@@ -523,6 +523,9 @@
 #define EAFNOSUPPORT WSAEAFNOSUPPORT
 #endif
 
+DllExport PerlInterpreter *win32_signal_context(void);
+#define PERL_GET_SIG_CONTEXT win32_signal_context()
+
 #endif /* _INC_WIN32_PERL5 */
 
 
End of Patch.

Reply via email to