Fix POSIX port to respect configUSE_TIME_SLICING (#1103)

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
Gaurav-Aggarwal-AWS 2024-07-26 10:42:33 +05:30 committed by GitHub
parent 5588ae68c8
commit d844312131
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -264,7 +264,7 @@ BaseType_t xPortStartScheduler( void )
#else /* Linux PTHREAD library*/ #else /* Linux PTHREAD library*/
hSigSetupThread = PTHREAD_ONCE_INIT; hSigSetupThread = PTHREAD_ONCE_INIT;
#endif /* __APPLE__*/ #endif /* __APPLE__*/
/* Restore original signal mask. */ /* Restore original signal mask. */
( void ) pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL ); ( void ) pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL );
@ -382,7 +382,7 @@ static uint64_t prvGetTimeNs( void )
static void * prvTimerTickHandler( void * arg ) static void * prvTimerTickHandler( void * arg )
{ {
( void ) arg; ( void ) arg;
prvPortSetCurrentThreadName("Scheduler timer"); prvPortSetCurrentThreadName("Scheduler timer");
while( xTimerTickThreadShouldRun ) while( xTimerTickThreadShouldRun )
@ -420,36 +420,19 @@ static void vPortSystemTickHandler( int sig )
( void ) sig; ( void ) sig;
/* uint64_t xExpectedTicks; */
uxCriticalNesting++; /* Signals are blocked in this signal handler. */ uxCriticalNesting++; /* Signals are blocked in this signal handler. */
#if ( configUSE_PREEMPTION == 1 ) pxThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() );
pxThreadToSuspend = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() );
#endif
/* Tick Increment, accounting for any lost signals or drift in if( xTaskIncrementTick() != pdFALSE )
* the timer. */ {
/*
* Comment code to adjust timing according to full demo requirements
* xExpectedTicks = (prvGetTimeNs() - prvStartTimeNs)
* / (portTICK_RATE_MICROSECONDS * 1000);
* do { */
xTaskIncrementTick();
/* prvTickCount++;
* } while (prvTickCount < xExpectedTicks);
*/
#if ( configUSE_PREEMPTION == 1 )
/* Select Next Task. */ /* Select Next Task. */
vTaskSwitchContext(); vTaskSwitchContext();
pxThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() ); pxThreadToResume = prvGetThreadFromTask( xTaskGetCurrentTaskHandle() );
prvSwitchThread( pxThreadToResume, pxThreadToSuspend ); prvSwitchThread( pxThreadToResume, pxThreadToSuspend );
#endif }
uxCriticalNesting--; uxCriticalNesting--;
} }