mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-20 17:44:20 +08:00
将yield状态置于tcb的stat位域中
This commit is contained in:
+1
-1
@@ -89,7 +89,7 @@ void rt_tick_increase(void)
|
||||
/* change to initialized tick */
|
||||
thread->remaining_tick = thread->init_tick;
|
||||
|
||||
thread->can_yield = RT_TRUE;
|
||||
thread->stat |= RT_THREAD_STAT_YIELD;
|
||||
|
||||
/* yield */
|
||||
rt_thread_yield();
|
||||
|
||||
+6
-6
@@ -344,13 +344,13 @@ void rt_schedule(void)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else if (current_thread->current_priority == highest_ready_priority && current_thread->can_yield == RT_FALSE)
|
||||
else if (current_thread->current_priority == highest_ready_priority && (current_thread->stat & RT_THREAD_STAT_YIELD_MASK) == 0)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_thread->can_yield = RT_FALSE;
|
||||
current_thread->stat &= ~RT_THREAD_STAT_YIELD_MASK;
|
||||
rt_schedule_insert_thread(current_thread);
|
||||
}
|
||||
}
|
||||
@@ -440,13 +440,13 @@ void rt_schedule(void)
|
||||
{
|
||||
to_thread = rt_current_thread;
|
||||
}
|
||||
else if (rt_current_thread->current_priority == highest_ready_priority && rt_current_thread->can_yield == RT_FALSE)
|
||||
else if (rt_current_thread->current_priority == highest_ready_priority && (rt_current_thread->stat & RT_THREAD_STAT_YIELD_MASK) == 0)
|
||||
{
|
||||
to_thread = rt_current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
rt_current_thread->can_yield = RT_FALSE;
|
||||
rt_current_thread->stat &= ~RT_THREAD_STAT_YIELD_MASK;
|
||||
need_insert_from_thread = 1;
|
||||
}
|
||||
}
|
||||
@@ -588,13 +588,13 @@ void rt_scheduler_do_irq_switch(void *context)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else if (current_thread->current_priority == highest_ready_priority && current_thread->can_yield == RT_FALSE)
|
||||
else if (current_thread->current_priority == highest_ready_priority && (current_thread->stat & RT_THREAD_STAT_YIELD_MASK) == 0)
|
||||
{
|
||||
to_thread = current_thread;
|
||||
}
|
||||
else
|
||||
{
|
||||
current_thread->can_yield = RT_FALSE;
|
||||
current_thread->stat &= ~RT_THREAD_STAT_YIELD_MASK;
|
||||
rt_schedule_insert_thread(current_thread);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,7 +159,6 @@ static rt_err_t _rt_thread_init(struct rt_thread *thread,
|
||||
/* tick init */
|
||||
thread->init_tick = tick;
|
||||
thread->remaining_tick = tick;
|
||||
thread->can_yield = RT_FALSE;
|
||||
|
||||
/* error and flags */
|
||||
thread->error = RT_EOK;
|
||||
|
||||
Reference in New Issue
Block a user