mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-21 10:36:04 +08:00
[Kernel] Fix the critical issue under smp
This commit is contained in:
@@ -792,6 +792,12 @@ void rt_enter_critical(void)
|
||||
level = rt_hw_local_irq_disable();
|
||||
|
||||
current_thread = rt_cpu_self()->current_thread;
|
||||
if (!current_thread)
|
||||
{
|
||||
rt_hw_local_irq_enable(level);
|
||||
return ;
|
||||
}
|
||||
|
||||
/*
|
||||
* the maximal number of nest is RT_UINT16_MAX, which is big
|
||||
* enough and does not check here
|
||||
@@ -842,6 +848,11 @@ void rt_exit_critical(void)
|
||||
level = rt_hw_local_irq_disable();
|
||||
|
||||
current_thread = rt_cpu_self()->current_thread;
|
||||
if (!current_thread)
|
||||
{
|
||||
rt_hw_local_irq_enable(level);
|
||||
return ;
|
||||
}
|
||||
|
||||
current_thread->scheduler_lock_nest --;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user