2
0
Эх сурвалжийг харах

Fixed switching to bound activities

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7352 8c9fc860-2736-0410-a75d-ab315db34111
negelef 8 жил өмнө
parent
commit
421e6f56c5
1 өөрчлөгдсөн 4 нэмэгдсэн , 0 устгасан
  1. 4 0
      source/Activities.Mod

+ 4 - 0
source/Activities.Mod

@@ -237,6 +237,10 @@ END Resume;
 PROCEDURE SwitchTo- (VAR activity: Activity; finalizer: SwitchFinalizer; argument: ADDRESS);
 VAR currentActivity {UNTRACED}, nextActivity {UNTRACED}: Activity; diff: Timer.Counter;
 BEGIN {UNCOOPERATIVE, UNCHECKED}
+	IF activity.bound & (activity.processor # SYSTEM.GetActivity ()(Activity).processor) THEN
+		REPEAT UNTIL Select (nextActivity, IdlePriority);
+		Resume (activity); activity := nextActivity;
+	END;
 	currentActivity := SYSTEM.GetActivity ()(Activity);
 	currentActivity.framePointer := SYSTEM.GetFramePointer ();
 	currentActivity.quantum := CPU.Quantum;