ProcessorScheduler.st
changeset 3857 b74a1f076b34
parent 3849 f2502ba2f7ea
child 3862 1a5b7b1ce72e
--- a/ProcessorScheduler.st	Fri Sep 25 20:22:22 1998 +0200
+++ b/ProcessorScheduler.st	Mon Sep 28 12:20:07 1998 +0200
@@ -968,10 +968,17 @@
     index := KnownProcessIds identityIndexOf:id.
     index ~~ 0 ifTrue:[
         aProcess := KnownProcesses at:index.
-        aProcess state ~~ #wrapWait ifTrue:[
-            'oops - resumeImmIRQ for non wrapWait process' printCR.
-            ^ self
-        ].
+        "/
+        "/ CG: the situation below may happen, if the wrapCall
+        "/ finishes before the process was layed to sleep
+        "/ (i.e. schedulerIRQ arrives before the threadSwitch
+        "/ was finished.
+        "/ In that case, simply resume it and everything is OK.
+        "/
+"/        aProcess state ~~ #wrapWait ifTrue:[
+"/            'ProcSched [info]: oops - resumeImmIRQ for non wrapWait process' infoPrintCR.
+"/            ^ self
+"/        ].
         pri := aProcess priority.
         l := quiescentProcessLists at:pri.
         "if already running, ignore"
@@ -990,7 +997,7 @@
         'oops - resumeImmIRQ for unknown process' printCR.
     ]
 
-    "Modified: / 23.9.1998 / 11:00:01 / cg"
+    "Modified: / 28.9.1998 / 11:36:53 / cg"
 ! !
 
 !ProcessorScheduler methodsFor:'os process handling'!
@@ -2986,6 +2993,6 @@
 !ProcessorScheduler class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.165 1998-09-24 10:53:44 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/ProcessorScheduler.st,v 1.166 1998-09-28 10:20:07 cg Exp $'
 ! !
 ProcessorScheduler initialize!