[kernel]fix scheduling exception caused by interrupt preemption in rt_schedule

This commit is contained in:
wdfk-prog
2025-09-21 09:43:26 +08:00
committed by R b b666
parent 42458e0618
commit 2d375b236c

View File

@@ -32,6 +32,7 @@
* 2023-10-17 ChuShicheng Modify the timing of clearing RT_THREAD_STAT_YIELD flag bits
* 2025-08-04 Pillar Add rt_scheduler_critical_switch_flag
* 2025-08-20 RyanCW rt_scheduler_lock_nest use atomic operations
* 2025-09-20 wdfk_prog fix scheduling exception caused by interrupt preemption in rt_schedule
*/
#define __RT_IPC_SOURCE__
@@ -283,12 +284,14 @@ void rt_schedule(void)
rt_base_t level;
struct rt_thread *to_thread;
struct rt_thread *from_thread;
/* using local variable to avoid unecessary function call */
struct rt_thread *curr_thread = rt_thread_self();
struct rt_thread *curr_thread;
/* disable interrupt */
level = rt_hw_interrupt_disable();
/* using local variable to avoid unnecessary function call */
curr_thread = rt_thread_self();
/* check the scheduler is enabled or not */
if (rt_scheduler_lock_nest == 0)
{