mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Fix POSIX port to respect configUSE_TIME_SLICING (#1103)
Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
This commit is contained in:
parent
5588ae68c8
commit
d844312131
29
portable/ThirdParty/GCC/Posix/port.c
vendored
29
portable/ThirdParty/GCC/Posix/port.c
vendored
|
@ -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--;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue