master/master.c
changeset 650 c68995623e94
parent 648 0a6d38ec463f
child 651 8c11399cc911
--- a/master/master.c	Mon Mar 12 11:02:05 2007 +0000
+++ b/master/master.c	Mon Mar 12 12:11:43 2007 +0000
@@ -836,8 +836,13 @@
         master->idle_cycle_time_pos++;
         master->idle_cycle_time_pos %= HZ;
 
-        set_current_state(TASK_INTERRUPTIBLE);
-        schedule_timeout(1);
+        if (ec_fsm_master_idle(&master->fsm)) {
+            set_current_state(TASK_INTERRUPTIBLE);
+            schedule_timeout(1);
+        }
+        else {
+            schedule();
+        }
     }
     
     master->thread_id = 0;
@@ -883,8 +888,13 @@
         master->idle_cycle_time_pos %= HZ;
 
 schedule:
-        set_current_state(TASK_INTERRUPTIBLE);
-        schedule_timeout(1);
+        if (ec_fsm_master_idle(&master->fsm)) {
+            set_current_state(TASK_INTERRUPTIBLE);
+            schedule_timeout(1);
+        }
+        else {
+            schedule();
+        }
     }
     
     master->thread_id = 0;