Process.st
changeset 302 1f76060d58a4
parent 252 cf6eef7703ad
child 314 7581a5c57224
equal deleted inserted replaced
301:35e40a6fc72b 302:1f76060d58a4
    13 Link subclass:#Process
    13 Link subclass:#Process
    14 	 instanceVariableNames:'id prio state startBlock name 
    14 	 instanceVariableNames:'id prio state startBlock name 
    15 				restartable interruptActions 
    15 				restartable interruptActions 
    16 				exitAction exitSemaphore suspendSemaphore 
    16 				exitAction exitSemaphore suspendSemaphore 
    17 				singleStepping emergencySignalHandler'
    17 				singleStepping emergencySignalHandler'
    18 	 classVariableNames:'TerminateSignal'
    18 	 classVariableNames:'TerminateSignal CoughtSignals'
    19 	 poolDictionaries:''
    19 	 poolDictionaries:''
    20 	 category:'Kernel-Processes'
    20 	 category:'Kernel-Processes'
    21 !
    21 !
    22 
    22 
    23 Process comment:'
    23 Process comment:'
    24 COPYRIGHT (c) 1992 by Claus Gittinger
    24 COPYRIGHT (c) 1992 by Claus Gittinger
    25 	     All Rights Reserved
    25 	     All Rights Reserved
    26 
    26 
    27 $Header: /cvs/stx/stx/libbasic/Process.st,v 1.20 1995-02-15 10:24:43 claus Exp $
    27 $Header: /cvs/stx/stx/libbasic/Process.st,v 1.21 1995-03-08 23:39:27 claus Exp $
    28 '!
    28 '!
    29 
    29 
    30 !Process class methodsFor:'documentation'!
    30 !Process class methodsFor:'documentation'!
    31 
    31 
    32 copyright
    32 copyright
    43 "
    43 "
    44 !
    44 !
    45 
    45 
    46 version
    46 version
    47 "
    47 "
    48 $Header: /cvs/stx/stx/libbasic/Process.st,v 1.20 1995-02-15 10:24:43 claus Exp $
    48 $Header: /cvs/stx/stx/libbasic/Process.st,v 1.21 1995-03-08 23:39:27 claus Exp $
    49 "
    49 "
    50 !
    50 !
    51 
    51 
    52 documentation
    52 documentation
    53 "
    53 "
   196 
   196 
   197 !Process class methodsFor:'initialization'!
   197 !Process class methodsFor:'initialization'!
   198 
   198 
   199 initialize
   199 initialize
   200     TerminateSignal isNil ifTrue:[
   200     TerminateSignal isNil ifTrue:[
       
   201 	AbortSignal isNil ifTrue:[super initialize].
       
   202 
   201 	TerminateSignal := Signal new mayProceed:true.
   203 	TerminateSignal := Signal new mayProceed:true.
   202 	TerminateSignal nameClass:self message:#terminateSignal.
   204 	TerminateSignal nameClass:self message:#terminateSignal.
   203 	TerminateSignal notifierString:'unhandled process termination'.
   205 	TerminateSignal notifierString:'unhandled process termination'.
       
   206 
       
   207 	CoughtSignals := SignalSet with:AbortSignal with:TerminateSignal.
   204     ]
   208     ]
   205 ! !
   209 ! !
   206 
   210 
   207 !Process class methodsFor:'signal access'!
   211 !Process class methodsFor:'signal access'!
   208 
   212 
   506 	"
   510 	"
   507 	name isNil ifTrue:[
   511 	name isNil ifTrue:[
   508 	    name := '(' , startBlock displayString , ')'
   512 	    name := '(' , startBlock displayString , ')'
   509 	].
   513 	].
   510 	startBlock := nil.
   514 	startBlock := nil.
   511 	(SignalSet with:TerminateSignal with:AbortSignal)
   515 	CoughtSignals handle:[:ex |
   512 	handle:[:ex |
       
   513 	    ex return
   516 	    ex return
   514 	] do:block.
   517 	] do:block.
   515 
   518 
   516 	(block := exitAction) notNil ifTrue:[
   519 	(block := exitAction) notNil ifTrue:[
   517 	    exitAction := nil.
   520 	    exitAction := nil.