diff options
| author | Shicheng Chu <[email protected]> | 2023-10-30 23:11:40 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-30 23:11:40 +0800 |
| commit | e78cfdf64b4fa6c35dfaf427599bf9d3f3cb306c (patch) | |
| tree | 111a0edc504d92c51b11594cb4124d04bd8dbfb7 /src/scheduler_up.c | |
| parent | acc66c547999ce444b79efccd67625a1af347d5d (diff) | |
[kernel][scheduler]Modify the timing of clearing RT_THREAD_STAT_YIELD… (#8142)
Diffstat (limited to 'src/scheduler_up.c')
| -rw-r--r-- | src/scheduler_up.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/scheduler_up.c b/src/scheduler_up.c index d8b13a5620..34193b0acc 100644 --- a/src/scheduler_up.c +++ b/src/scheduler_up.c @@ -29,6 +29,7 @@ * new task directly * 2022-01-07 Gabriel Moving __on_rt_xxxxx_hook to scheduler.c * 2023-03-27 rose_man Split into scheduler upc and scheduler_mp.c + * 2023-10-17 ChuShicheng Modify the timing of clearing RT_THREAD_STAT_YIELD flag bits */ #include <rtthread.h> @@ -270,7 +271,6 @@ void rt_schedule(void) { need_insert_from_thread = 1; } - rt_current_thread->stat &= ~RT_THREAD_STAT_YIELD_MASK; } if (to_thread != rt_current_thread) @@ -287,6 +287,11 @@ void rt_schedule(void) rt_schedule_insert_thread(from_thread); } + if ((from_thread->stat & RT_THREAD_STAT_YIELD_MASK) != 0) + { + from_thread->stat &= ~RT_THREAD_STAT_YIELD_MASK; + } + rt_schedule_remove_thread(to_thread); to_thread->stat = RT_THREAD_RUNNING | (to_thread->stat & ~RT_THREAD_STAT_MASK); |
