Browse Source

[Kernel] Fix the critical issue when scheduler not start

Bernard Xiong 6 years ago
parent
commit
0366eb13ac
1 changed files with 5 additions and 2 deletions
  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
     {
     {