Browse Source

fixed SIGINT handling

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7514 8c9fc860-2736-0410-a75d-ab315db34111
eth.guenter 7 years ago
parent
commit
0d6db2d12e

+ 8 - 2
source/Generic.Darwin.I386.Unix.Mod

@@ -934,11 +934,17 @@ VAR
 	VAR i: LONGINT;
 	VAR i: LONGINT;
 	BEGIN
 	BEGIN
 		FOR i := 1 TO 15 DO
 		FOR i := 1 TO 15 DO
-			IF i # 9 THEN InstallHandler(i) END;
+			IF ~(i IN {SIGINT, SIGKILL}) THEN InstallHandler(i) END;
 			InstallHandler( SIGUSR1 );
 			InstallHandler( SIGUSR1 );
 		END;
 		END;
 	END InitSignalHandler;
 	END InitSignalHandler;
-
+	
+	PROCEDURE HandleSignal*( sig: LONGINT );
+	BEGIN
+		InstallHandler( sig )
+	END HandleSignal;
+	
+	
 	PROCEDURE errno*(): LONGINT;
 	PROCEDURE errno*(): LONGINT;
 	VAR loc: ADDRESS;
 	VAR loc: ADDRESS;
 	BEGIN
 	BEGIN

+ 7 - 3
source/Generic.Linux.I386.Unix.Mod

@@ -916,10 +916,9 @@ VAR
 	PROCEDURE {C} SigHandler  ( sig: LONGINT; scp: ADDRESS; ucp: Ucontext ); (* reversed arguments !! *)
 	PROCEDURE {C} SigHandler  ( sig: LONGINT; scp: ADDRESS; ucp: Ucontext ); (* reversed arguments !! *)
 	BEGIN
 	BEGIN
 		IF trap # NIL THEN
 		IF trap # NIL THEN
-			Trace.Address( ucp ); Trace.Ln;
 			trap( sig, S.VAL( Mcontext, ADDRESSOF( ucp.mc ) ) )
 			trap( sig, S.VAL( Mcontext, ADDRESSOF( ucp.mc ) ) )
 		ELSE
 		ELSE
-			TRACE( sig, scp, ucp )
+			Trace.String( "Unix.SigHandler: sig = " ); Trace.Int( sig, 0 ); Trace.Ln;  exit( -1 );
 		END;
 		END;
 	END SigHandler;
 	END SigHandler;
 
 
@@ -964,9 +963,14 @@ VAR
 	VAR i: LONGINT;
 	VAR i: LONGINT;
 	BEGIN
 	BEGIN
 		FOR i := 1 TO 15 DO
 		FOR i := 1 TO 15 DO
-			IF i # 9 THEN InstallHandler(i) END;
+			IF ~(i IN {SIGINT, SIGKILL}) THEN InstallHandler(i) END;
 		END;
 		END;
 	END InitSignalHandler;
 	END InitSignalHandler;
+	
+	PROCEDURE HandleSignal*( sig: LONGINT );
+	BEGIN
+		InstallHandler( sig )
+	END HandleSignal;
 
 
 	PROCEDURE errno*(): LONGINT;
 	PROCEDURE errno*(): LONGINT;
 	VAR loc: ADDRESS;
 	VAR loc: ADDRESS;

+ 6 - 1
source/Generic.Solaris.I386.Unix.Mod

@@ -614,11 +614,16 @@ VAR
 	VAR i: LONGINT;
 	VAR i: LONGINT;
 	BEGIN
 	BEGIN
 		FOR i := 1 TO 15 DO
 		FOR i := 1 TO 15 DO
-			IF i # 9 THEN InstallHandler( i ) END;
+			IF ~(i IN {SIGINT, SIGKILL}) THEN InstallHandler( i ) END;
 		END;
 		END;
 		InstallHandler( SIGUSR1 );
 		InstallHandler( SIGUSR1 );
 	END InitSignalHandler;
 	END InitSignalHandler;
 	
 	
+	PROCEDURE HandleSignal*( sig: LONGINT );
+	BEGIN
+		InstallHandler( sig )
+	END HandleSignal;
+	
 	(*-------------------------------------------------------------------------------------------------------------*)
 	(*-------------------------------------------------------------------------------------------------------------*)
 	
 	
 	
 	

+ 1 - 0
source/Unix.BootConsole.Mod

@@ -182,6 +182,7 @@ BEGIN
 	Glue.Initialize;
 	Glue.Initialize;
 	InitializeCoreModules;
 	InitializeCoreModules;
 	StartSystem;
 	StartSystem;
+	Unix.HandleSignal( 2 );	
 	Objects.GCLoop
 	Objects.GCLoop
 END BootConsole.
 END BootConsole.