[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Lost] [Patch] kernel: Fix für PF beim Timerablauf



Wenn abort_task einen int 0x20 ausführt, um zum nächsten Task zu wechseln, ist current_task == NULL. Dann muß erst ein neuer aktiver Task gesetzt werden, bevor auf Timerabläufe geprüft werden darf (damit der RPC einen gültigen Absender hat)
Index: src/kernel/src/schedule.c
===================================================================
--- src/kernel/src/schedule.c	(Revision 674)
+++ src/kernel/src/schedule.c	(Arbeitskopie)
@@ -77,8 +77,6 @@
         request_irq(0, do_nothing);
     #endif
     
-    timer_notify(timer_ticks);
-
     //Ueberpruefen, ob der aktuelle Task alle seine Zeit verbraucht hat. Wenn
     // ja, wird ein neuer Task ausgewaehlt
     if ((current_task == NULL) ||
@@ -86,6 +84,11 @@
     {
         schedule(esp);
     }
+
+    // Ueberpruefen, ob ein Timer abgelaufen ist.
+    // Dies muss nach dem schedule() kommen, da der Timer mit current_task ==
+    // NULL nicht zurechtkommt.
+    timer_notify(timer_ticks);
 }