Remove tickless idle mode dependency with include v task suspend (#422)

* Fix Remove tickless idle feature dependency with INCLUDE_vTaskSuspend
* fix unused variable warning
* Fix CI fomatting check

Signed-off-by: Gaurav Aggarwal <aggarg@amazon.com>
Authored-by: pramithkv <pramit@lifesignals.com>
This commit is contained in:
Pramith K V 2021-12-09 05:17:07 +05:30 committed by GitHub
parent 052e364686
commit 4c4089b154
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 22 deletions

View File

@ -924,12 +924,6 @@
#endif
/* Sanity check the configuration. */
#if ( configUSE_TICKLESS_IDLE != 0 )
#if ( INCLUDE_vTaskSuspend != 1 )
#error INCLUDE_vTaskSuspend must be set to 1 if configUSE_TICKLESS_IDLE is not set to 0
#endif /* INCLUDE_vTaskSuspend */
#endif /* configUSE_TICKLESS_IDLE */
#if ( ( configSUPPORT_STATIC_ALLOCATION == 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 0 ) )
#error configSUPPORT_STATIC_ALLOCATION and configSUPPORT_DYNAMIC_ALLOCATION cannot both be 0, but can both be 1.
#endif

View File

@ -167,9 +167,11 @@ typedef struct xTASK_STATUS
/* Possible return values for eTaskConfirmSleepModeStatus(). */
typedef enum
{
eAbortSleep = 0, /* A task has been made ready or a context switch pended since portSUPPRESS_TICKS_AND_SLEEP() was called - abort entering a sleep mode. */
eStandardSleep, /* Enter a sleep mode that will not last any longer than the expected idle time. */
eNoTasksWaitingTimeout /* No tasks are waiting for a timeout so it is safe to enter a sleep mode that can only be exited by an external interrupt. */
eAbortSleep = 0, /* A task has been made ready or a context switch pended since portSUPPRESS_TICKS_AND_SLEEP() was called - abort entering a sleep mode. */
eStandardSleep, /* Enter a sleep mode that will not last any longer than the expected idle time. */
#if ( INCLUDE_vTaskSuspend == 1 )
eNoTasksWaitingTimeout /* No tasks are waiting for a timeout so it is safe to enter a sleep mode that can only be exited by an external interrupt. */
#endif /* INCLUDE_vTaskSuspend */
} eSleepModeStatus;
/**

29
tasks.c
View File

@ -3529,8 +3529,11 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
eSleepModeStatus eTaskConfirmSleepModeStatus( void )
{
/* The idle task exists in addition to the application tasks. */
const UBaseType_t uxNonApplicationTasks = 1;
#if ( INCLUDE_vTaskSuspend == 1 )
/* The idle task exists in addition to the application tasks. */
const UBaseType_t uxNonApplicationTasks = 1;
#endif /* INCLUDE_vTaskSuspend */
eSleepModeStatus eReturn = eStandardSleep;
/* This function must be called from a critical section. */
@ -3551,20 +3554,20 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
* because the scheduler is suspended. */
eReturn = eAbortSleep;
}
else
{
/* If all the tasks are in the suspended list (which might mean they
* have an infinite block time rather than actually being suspended)
* then it is safe to turn all clocks off and just wait for external
* interrupts. */
if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == ( uxCurrentNumberOfTasks - uxNonApplicationTasks ) )
#if ( INCLUDE_vTaskSuspend == 1 )
else if( listCURRENT_LIST_LENGTH( &xSuspendedTaskList ) == ( uxCurrentNumberOfTasks - uxNonApplicationTasks ) )
{
/* If all the tasks are in the suspended list (which might mean they
* have an infinite block time rather than actually being suspended)
* then it is safe to turn all clocks off and just wait for external
* interrupts. */
eReturn = eNoTasksWaitingTimeout;
}
else
{
mtCOVERAGE_TEST_MARKER();
}
#endif /* INCLUDE_vTaskSuspend */
else
{
mtCOVERAGE_TEST_MARKER();
}
return eReturn;