[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] kernel: Kooperatives Multitasking repariert
! kernel: Um tyndur mit kooperativem Multitasking zumindest booten zu
koennen, muessen Timer funktionieren. Also loesen wir das FIXME besser
mal.
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/kernel/src/schedule.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/kernel/src/schedule.c b/src/kernel/src/schedule.c
index 55aa5be..f7a2b84 100644
--- a/src/kernel/src/schedule.c
+++ b/src/kernel/src/schedule.c
@@ -71,19 +71,20 @@ void timer_irq(int irq, dword* esp)
{
timer_ticks += 1000000 / CONFIG_TIMER_HZ;
- // FIXME Kooperatives Multitasking zählt timer_ticks nicht hoch
- #ifdef CONFIG_COOPERATIVE_MULTITASKING
- release_irq(0);
- request_irq(0, do_nothing);
- #endif
-
//Ueberpruefen, ob der aktuelle Task alle seine Zeit verbraucht hat. Wenn
// ja, wird ein neuer Task ausgewaehlt
+ #ifndef CONFIG_COOPERATIVE_MULTITASKING
if ((current_task == NULL) ||
(--(current_task->schedule_ticks_left) >= 0))
{
schedule(esp);
}
+ #else
+ if (current_task == NULL) {
+ schedule(esp);
+ }
+ #endif
+
// Ueberpruefen, ob ein Timer abgelaufen ist.
// Dies muss nach dem schedule() kommen, da der Timer mit current_task ==
--
1.6.0.2