Add configCONTROL_INFINITE_LOOP for loop control in unit test (#783)

* Add configCONTROL_INFINITE_LOOP in FreeRTOS.h
* Use configCONTROL_INFINITE_LOOP in tasks.c and timer.c

---------

Co-authored-by: Soren Ptak <ptaksoren@gmail.com>
Co-authored-by: kar-rahul-aws <118818625+kar-rahul-aws@users.noreply.github.com>
This commit is contained in:
chinglee-iot 2023-10-05 16:57:53 +08:00 committed by GitHub
parent 97d48ba94a
commit d442d7908a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 9 deletions

View file

@ -2872,6 +2872,12 @@
#define configRUN_ADDITIONAL_TESTS 0
#endif
/* The following config allows infinite loop control. For example, control the
* infinite loop in idle task function when performing unit tests. */
#ifndef configCONTROL_INFINITE_LOOP
#define configCONTROL_INFINITE_LOOP()
#endif
/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using
* dynamically allocated RAM, in which case when any task is deleted it is known
* that both the task's stack and TCB need to be freed. Sometimes the

10
tasks.c
View file

@ -317,12 +317,6 @@
#define portDECREMENT_CRITICAL_NESTING_COUNT() ( pxCurrentTCBs[ portGET_CORE_ID() ]->uxCriticalNesting-- )
#endif /* #if ( ( configNUMBER_OF_CORES > 1 ) && ( portCRITICAL_NESTING_IN_TCB == 1 ) ) */
/* Code below here allows infinite loop controlling, especially for the infinite loop
* in idle task function (for example when performing unit tests). */
#ifndef INFINITE_LOOP
#define INFINITE_LOOP() 1
#endif
#define taskBITS_PER_BYTE ( ( size_t ) 8 )
#if ( configNUMBER_OF_CORES > 1 )
@ -5374,7 +5368,7 @@ void vTaskMissedYield( void )
taskYIELD();
for( ; INFINITE_LOOP(); )
for( ; configCONTROL_INFINITE_LOOP(); )
{
#if ( configUSE_PREEMPTION == 0 )
{
@ -5459,7 +5453,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
}
#endif /* #if ( configNUMBER_OF_CORES > 1 ) */
for( ; INFINITE_LOOP(); )
for( ; configCONTROL_INFINITE_LOOP(); )
{
/* See if any tasks have deleted themselves - if so then the idle task
* is responsible for freeing the deleted task's TCB and stack. */

View file

@ -709,7 +709,7 @@
}
#endif /* configUSE_DAEMON_TASK_STARTUP_HOOK */
for( ; ; )
for( ; configCONTROL_INFINITE_LOOP(); )
{
/* Query the timers list to see if it contains any timers, and if so,
* obtain the time at which the next timer will expire. */