forked from epagris/FreeRTOS-Kernel
		
	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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user