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