mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Fix context switch when time slicing is off (#568)
* Fix context switch when time slicing is off When time slicing is off, context switch should only happen when a task with priority higher than the currently executing one is unblocked. Earlier the code was invoking a context switch even when a task with priority equal the currently executing task was unblocked. This commit fixes the code to only do a context switch when a higher priority task is unblocked. Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
parent
44e02bff31
commit
1072988de7
12
tasks.c
12
tasks.c
|
@ -2812,10 +2812,14 @@ BaseType_t xTaskIncrementTick( void )
|
|||
#if ( configUSE_PREEMPTION == 1 )
|
||||
{
|
||||
/* Preemption is on, but a context switch should
|
||||
* only be performed if the unblocked task has a
|
||||
* priority that is equal to or higher than the
|
||||
* currently executing task. */
|
||||
if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )
|
||||
* only be performed if the unblocked task's
|
||||
* priority is higher than the currently executing
|
||||
* task.
|
||||
* The case of equal priority tasks sharing
|
||||
* processing time (which happens when both
|
||||
* preemption and time slicing are on) is
|
||||
* handled below.*/
|
||||
if( pxTCB->uxPriority > pxCurrentTCB->uxPriority )
|
||||
{
|
||||
xSwitchRequired = pdTRUE;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue