Parcourir la source

[Kernel] Fix the critical issue when scheduler not start

Bernard Xiong il y a 6 ans
Parent
commit
0366eb13ac
1 fichiers modifiés avec 5 ajouts et 2 suppressions
  1. 5 2
      src/scheduler.c

+ 5 - 2
src/scheduler.c

@@ -884,14 +884,17 @@ void rt_exit_critical(void)
     level = rt_hw_interrupt_disable();
     level = rt_hw_interrupt_disable();
 
 
     rt_scheduler_lock_nest --;
     rt_scheduler_lock_nest --;
-
     if (rt_scheduler_lock_nest <= 0)
     if (rt_scheduler_lock_nest <= 0)
     {
     {
         rt_scheduler_lock_nest = 0;
         rt_scheduler_lock_nest = 0;
         /* enable interrupt */
         /* enable interrupt */
         rt_hw_interrupt_enable(level);
         rt_hw_interrupt_enable(level);
 
 
-        rt_schedule();
+        if (rt_current_thread)
+        {
+            /* if scheduler is started, do a schedule */
+            rt_schedule();
+        }
     }
     }
     else
     else
     {
     {