mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-23 12:15:32 +08:00
开放spinlock相关函数
This commit is contained in:
+8
-3
@@ -840,11 +840,14 @@ void rt_enter_critical(void)
|
||||
*/
|
||||
|
||||
/* lock scheduler for all cpus */
|
||||
if (current_thread->scheduler_lock_nest == !!current_thread->cpus_lock_nest)
|
||||
if (current_thread->critical_lock_nest == 0)
|
||||
{
|
||||
rt_hw_spin_lock(&_rt_critical_lock);
|
||||
}
|
||||
|
||||
/* critical for local cpu */
|
||||
current_thread->critical_lock_nest ++;
|
||||
|
||||
/* lock scheduler for local cpu */
|
||||
current_thread->scheduler_lock_nest ++;
|
||||
|
||||
@@ -892,7 +895,9 @@ void rt_exit_critical(void)
|
||||
|
||||
current_thread->scheduler_lock_nest --;
|
||||
|
||||
if (current_thread->scheduler_lock_nest == !!current_thread->cpus_lock_nest)
|
||||
current_thread->critical_lock_nest --;
|
||||
|
||||
if (current_thread->critical_lock_nest == 0)
|
||||
{
|
||||
rt_hw_spin_unlock(&_rt_critical_lock);
|
||||
}
|
||||
@@ -951,7 +956,7 @@ rt_uint16_t rt_critical_level(void)
|
||||
#ifdef RT_USING_SMP
|
||||
struct rt_thread *current_thread = rt_cpu_self()->current_thread;
|
||||
|
||||
return current_thread->scheduler_lock_nest;
|
||||
return current_thread->critical_lock_nest;
|
||||
#else
|
||||
return rt_scheduler_lock_nest;
|
||||
#endif /*RT_USING_SMP*/
|
||||
|
||||
Reference in New Issue
Block a user