812 "/ this safes a bit of memory allocation in the scheduler) |
812 "/ this safes a bit of memory allocation in the scheduler) |
813 |
813 |
814 dispatchAction := [self dispatch]. |
814 dispatchAction := [self dispatch]. |
815 |
815 |
816 handlerAction := [:ex | |
816 handlerAction := [:ex | |
817 ('Processor [info]: ignored signal (', ex signal printString, ')') infoPrintCR. |
817 ('Processor [info]: ignored signal (', ex signal printString, ')') infoPrintCR. |
818 ex return |
818 ex return |
819 ]. |
819 ]. |
820 |
820 |
821 ignoredSignals := SignalSet |
821 ignoredSignals := SignalSet |
822 with:TerminateProcessRequest |
822 with:TerminateProcessRequest |
823 with:AbortAllOperationRequest. |
823 with:RecursionError |
|
824 with:AbortAllOperationRequest. |
824 |
825 |
825 "/ |
826 "/ |
826 "/ I made this an extra call to dispatch; this allows recompilation |
827 "/ I made this an extra call to dispatch; this allows recompilation |
827 "/ of the dispatch-handling code in the running system. |
828 "/ of the dispatch-handling code in the running system. |
828 "/ |
829 "/ |
829 [dispatching] whileTrue:[ |
830 [dispatching] whileTrue:[ |
830 ignoredSignals handle:handlerAction do:dispatchAction |
831 ignoredSignals handle:handlerAction do:dispatchAction |
831 ]. |
832 ]. |
832 |
833 |
833 "/ we arrive here in standalone Apps, |
834 "/ we arrive here in standalone Apps, |
834 "/ when the last process at or above UserSchedulingPriority process died. |
835 "/ when the last process at or above UserSchedulingPriority process died. |
835 "/ regular ST/X stays in above loop forever |
836 "/ regular ST/X stays in above loop forever |
836 |
837 |
837 'Processor [info]: finish dispatch (no more processes)' infoPrintCR. |
838 'Processor [info]: finish dispatch (no more processes)' infoPrintCR. |
838 |
839 |
839 "Modified: / 23.9.1996 / 14:19:56 / stefan" |
840 "Modified: / 23-09-1996 / 14:19:56 / stefan" |
840 "Modified: / 17.11.2001 / 11:10:23 / cg" |
841 "Modified: / 05-08-2011 / 09:54:36 / cg" |
841 ! |
842 ! |
842 |
843 |
843 exitWhenNoMoreUserProcesses:aBoolean |
844 exitWhenNoMoreUserProcesses:aBoolean |
844 "set/clear the flag, which controls if the scheduler should exit and return |
845 "set/clear the flag, which controls if the scheduler should exit and return |
845 when the last user process finishes (and therefore exit the smalltalk system). |
846 when the last user process finishes (and therefore exit the smalltalk system). |
3376 ! ! |
3377 ! ! |
3377 |
3378 |
3378 !ProcessorScheduler class methodsFor:'documentation'! |
3379 !ProcessorScheduler class methodsFor:'documentation'! |
3379 |
3380 |
3380 version |
3381 version |
3381 ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.257 2010-12-08 15:09:24 stefan Exp $' |
3382 ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.258 2011-08-05 07:54:52 cg Exp $' |
3382 ! |
3383 ! |
3383 |
3384 |
3384 version_CVS |
3385 version_CVS |
3385 ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.257 2010-12-08 15:09:24 stefan Exp $' |
3386 ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.258 2011-08-05 07:54:52 cg Exp $' |
3386 ! ! |
3387 ! ! |
3387 |
3388 |
3388 ProcessorScheduler initialize! |
3389 ProcessorScheduler initialize! |