mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-04 21:24:32 +02:00
Merge branch 'refactor/freertos_uncrustify_code_formatting' into 'master'
FreeRTOS: Uncrustify source code using upstream configuration See merge request espressif/esp-idf!20722
This commit is contained in:
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -224,7 +225,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -271,7 +272,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
xAlreadyYielded = pdFALSE;
|
xAlreadyYielded = pdFALSE;
|
||||||
#else
|
#else
|
||||||
@@ -360,7 +361,7 @@ EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -432,7 +433,7 @@ EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
|||||||
traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor );
|
traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
xAlreadyYielded = pdFALSE;
|
xAlreadyYielded = pdFALSE;
|
||||||
#else
|
#else
|
||||||
@@ -580,8 +581,9 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
|||||||
|
|
||||||
pxList = &( pxEventBits->xTasksWaitingForBits );
|
pxList = &( pxEventBits->xTasksWaitingForBits );
|
||||||
pxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
|
pxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 !e9087 The mini list structure is used as the list end to save RAM. This is checked and valid. */
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
|
|
||||||
/* We are about to traverse a task list which is a kernel data structure.
|
/* We are about to traverse a task list which is a kernel data structure.
|
||||||
* Thus we need to call vTaskTakeKernelLock() to take the kernel lock. */
|
* Thus we need to call vTaskTakeKernelLock() to take the kernel lock. */
|
||||||
vTaskTakeKernelLock();
|
vTaskTakeKernelLock();
|
||||||
@@ -659,7 +661,7 @@ EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
|||||||
* bit was set in the control word. */
|
* bit was set in the control word. */
|
||||||
pxEventBits->uxEventBits &= ~uxBitsToClear;
|
pxEventBits->uxEventBits &= ~uxBitsToClear;
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
/* Release the previously taken kernel lock, then release the event group spinlock. */
|
/* Release the previously taken kernel lock, then release the event group spinlock. */
|
||||||
vTaskReleaseKernelLock();
|
vTaskReleaseKernelLock();
|
||||||
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskEXIT_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
@@ -676,16 +678,18 @@ void vEventGroupDelete( EventGroupHandle_t xEventGroup )
|
|||||||
EventGroup_t * pxEventBits = xEventGroup;
|
EventGroup_t * pxEventBits = xEventGroup;
|
||||||
const List_t * pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );
|
const List_t * pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );
|
||||||
|
|
||||||
|
{
|
||||||
traceEVENT_GROUP_DELETE( xEventGroup );
|
traceEVENT_GROUP_DELETE( xEventGroup );
|
||||||
|
|
||||||
// IDF-3755
|
/* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
taskENTER_CRITICAL( &( pxEventBits->xEventGroupLock ) );
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* We are about to traverse a task list which is a kernel data structure.
|
/* We are about to traverse a task list which is a kernel data structure.
|
||||||
* Thus we need to call vTaskTakeKernelLock() to take the kernel lock. */
|
* Thus we need to call vTaskTakeKernelLock() to take the kernel lock. */
|
||||||
vTaskTakeKernelLock();
|
vTaskTakeKernelLock();
|
||||||
#endif
|
#endif
|
||||||
{
|
|
||||||
while( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( UBaseType_t ) 0 )
|
while( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( UBaseType_t ) 0 )
|
||||||
{
|
{
|
||||||
/* Unblock the task, returning 0 as the event list is being deleted
|
/* Unblock the task, returning 0 as the event list is being deleted
|
||||||
@@ -693,7 +697,7 @@ void vEventGroupDelete( EventGroupHandle_t xEventGroup )
|
|||||||
configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );
|
configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( const ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );
|
||||||
vTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );
|
vTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
/* Release the previously taken kernel lock. */
|
/* Release the previously taken kernel lock. */
|
||||||
vTaskReleaseKernelLock();
|
vTaskReleaseKernelLock();
|
||||||
@@ -721,6 +725,7 @@ void vEventGroupDelete( EventGroupHandle_t xEventGroup )
|
|||||||
}
|
}
|
||||||
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
#endif /* configSUPPORT_DYNAMIC_ALLOCATION */
|
||||||
}
|
}
|
||||||
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* For internal use only - execute a 'set bits' command that was pended from
|
/* For internal use only - execute a 'set bits' command that was pended from
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -756,7 +757,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS
|
* Default values for trace macros added by ESP-IDF and are not part of Vanilla FreeRTOS
|
||||||
*/
|
*/
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
#ifndef traceISR_EXIT_TO_SCHEDULER
|
#ifndef traceISR_EXIT_TO_SCHEDULER
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -59,13 +59,14 @@
|
|||||||
* \ingroup FreeRTOSIntro
|
* \ingroup FreeRTOSIntro
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef INC_FREERTOS_H
|
|
||||||
#error "FreeRTOS.h must be included before list.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef LIST_H
|
#ifndef LIST_H
|
||||||
#define LIST_H
|
#define LIST_H
|
||||||
|
|
||||||
|
#ifndef INC_FREERTOS_H
|
||||||
|
#error "FreeRTOS.h must be included before list.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The list structure members are modified from within interrupts, and therefore
|
* The list structure members are modified from within interrupts, and therefore
|
||||||
* by rights should be declared volatile. However, they are only modified in a
|
* by rights should be declared volatile. However, they are only modified in a
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -76,8 +77,8 @@
|
|||||||
#define uxTaskGetStackHighWaterMark2 MPU_uxTaskGetStackHighWaterMark2
|
#define uxTaskGetStackHighWaterMark2 MPU_uxTaskGetStackHighWaterMark2
|
||||||
#define vTaskSetApplicationTaskTag MPU_vTaskSetApplicationTaskTag
|
#define vTaskSetApplicationTaskTag MPU_vTaskSetApplicationTaskTag
|
||||||
#define xTaskGetApplicationTaskTag MPU_xTaskGetApplicationTaskTag
|
#define xTaskGetApplicationTaskTag MPU_xTaskGetApplicationTaskTag
|
||||||
// #define vTaskSetThreadLocalStoragePointer MPU_vTaskSetThreadLocalStoragePointer
|
/* #define vTaskSetThreadLocalStoragePointer MPU_vTaskSetThreadLocalStoragePointer */
|
||||||
// #define pvTaskGetThreadLocalStoragePointer MPU_pvTaskGetThreadLocalStoragePointer
|
/* #define pvTaskGetThreadLocalStoragePointer MPU_pvTaskGetThreadLocalStoragePointer */
|
||||||
#define xTaskCallApplicationTaskHook MPU_xTaskCallApplicationTaskHook
|
#define xTaskCallApplicationTaskHook MPU_xTaskCallApplicationTaskHook
|
||||||
#define xTaskGetIdleTaskHandle MPU_xTaskGetIdleTaskHandle
|
#define xTaskGetIdleTaskHandle MPU_xTaskGetIdleTaskHandle
|
||||||
#define uxTaskGetSystemState MPU_uxTaskGetSystemState
|
#define uxTaskGetSystemState MPU_uxTaskGetSystemState
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -46,11 +47,9 @@ typedef void (* TaskFunction_t)( void * );
|
|||||||
#ifndef pdMS_TO_TICKS
|
#ifndef pdMS_TO_TICKS
|
||||||
#define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000U ) )
|
#define pdMS_TO_TICKS( xTimeInMs ) ( ( TickType_t ) ( ( ( TickType_t ) ( xTimeInMs ) * ( TickType_t ) configTICK_RATE_HZ ) / ( TickType_t ) 1000U ) )
|
||||||
#endif
|
#endif
|
||||||
#ifdef ESP_PLATFORM
|
|
||||||
#ifndef pdTICKS_TO_MS
|
#ifndef pdTICKS_TO_MS
|
||||||
#define pdTICKS_TO_MS( xTicks ) ( ( TickType_t ) ( ( uint64_t ) ( xTicks ) * 1000 / configTICK_RATE_HZ ) )
|
#define pdTICKS_TO_MS( xTicks ) ( ( TickType_t ) ( ( uint64_t ) ( xTicks ) * 1000 / configTICK_RATE_HZ ) )
|
||||||
#endif
|
#endif
|
||||||
#endif // ESP_PLATFORM
|
|
||||||
|
|
||||||
#define pdFALSE ( ( BaseType_t ) 0 )
|
#define pdFALSE ( ( BaseType_t ) 0 )
|
||||||
#define pdTRUE ( ( BaseType_t ) 1 )
|
#define pdTRUE ( ( BaseType_t ) 1 )
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -1321,6 +1322,7 @@ void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
|||||||
|
|
||||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||||
/**@{*/
|
/**@{*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* queue. h
|
* queue. h
|
||||||
@@ -1405,6 +1407,7 @@ BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue,
|
|||||||
const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
|
const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
|
||||||
BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
|
BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
|
||||||
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
* @cond !DOC_EXCLUDE_HEADER_SECTION
|
||||||
* queue. h
|
* queue. h
|
||||||
@@ -1509,6 +1512,7 @@ BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUN
|
|||||||
UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The functions defined above are for passing data to and from tasks. The
|
* The functions defined above are for passing data to and from tasks. The
|
||||||
* functions below are the equivalents for passing data to and from
|
* functions below are the equivalents for passing data to and from
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -47,6 +48,7 @@ typedef QueueHandle_t SemaphoreHandle_t;
|
|||||||
#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U )
|
#define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U )
|
||||||
|
|
||||||
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
/** @cond !DOC_EXCLUDE_HEADER_SECTION */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* semphr. h
|
* semphr. h
|
||||||
* @code{c}
|
* @code{c}
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -62,7 +63,7 @@
|
|||||||
#if ( configCHECK_FOR_STACK_OVERFLOW == 1 )
|
#if ( configCHECK_FOR_STACK_OVERFLOW == 1 )
|
||||||
|
|
||||||
/* FreeRTOSConfig.h is only set to use the first method of
|
/* FreeRTOSConfig.h is only set to use the first method of
|
||||||
overflow checking. */
|
* overflow checking. */
|
||||||
#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()
|
#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -809,9 +810,9 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ( configUSE_MUTEXES == 1 && configCHECK_MUTEX_GIVEN_BY_OWNER == 1 )
|
#if ( configUSE_MUTEXES == 1 && configCHECK_MUTEX_GIVEN_BY_OWNER == 1 )
|
||||||
configASSERT(pxQueue->uxQueueType != queueQUEUE_IS_MUTEX
|
configASSERT( pxQueue->uxQueueType != queueQUEUE_IS_MUTEX ||
|
||||||
|| pxQueue->u.xSemaphore.xMutexHolder == NULL
|
pxQueue->u.xSemaphore.xMutexHolder == NULL ||
|
||||||
|| pxQueue->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle());
|
pxQueue->u.xSemaphore.xMutexHolder == xTaskGetCurrentTaskHandle() );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*lint -save -e904 This function relaxes the coding standard somewhat to
|
/*lint -save -e904 This function relaxes the coding standard somewhat to
|
||||||
@@ -960,7 +961,7 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
|||||||
/* Interrupts and other tasks can send to and receive from the queue
|
/* Interrupts and other tasks can send to and receive from the queue
|
||||||
* now the critical section has been exited. */
|
* now the critical section has been exited. */
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -987,7 +988,7 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
|||||||
* task is already in the ready list before it yields - in which
|
* task is already in the ready list before it yields - in which
|
||||||
* case the yield will not cause a context switch unless there
|
* case the yield will not cause a context switch unless there
|
||||||
* is also a higher priority task in the pending ready list. */
|
* is also a higher priority task in the pending ready list. */
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
if( xTaskResumeAll() == pdFALSE )
|
if( xTaskResumeAll() == pdFALSE )
|
||||||
@@ -995,13 +996,12 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Try again. */
|
/* Try again. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1012,7 +1012,7 @@ BaseType_t xQueueGenericSend( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
/* The timeout has expired. */
|
/* The timeout has expired. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1357,6 +1357,7 @@ BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue,
|
|||||||
traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue );
|
traceQUEUE_GIVE_FROM_ISR_FAILED( pxQueue );
|
||||||
xReturn = errQUEUE_FULL;
|
xReturn = errQUEUE_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL_ISR( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL_ISR( &( pxQueue->xQueueLock ) );
|
||||||
}
|
}
|
||||||
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );
|
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );
|
||||||
@@ -1456,7 +1457,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
|||||||
/* Interrupts and other tasks can send to and receive from the queue
|
/* Interrupts and other tasks can send to and receive from the queue
|
||||||
* now the critical section has been exited. */
|
* now the critical section has been exited. */
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -1473,7 +1474,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
|||||||
traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue );
|
traceBLOCKING_ON_QUEUE_RECEIVE( pxQueue );
|
||||||
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
if( xTaskResumeAll() == pdFALSE )
|
if( xTaskResumeAll() == pdFALSE )
|
||||||
@@ -1481,6 +1482,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ESP_PLATFORM
|
#ifndef ESP_PLATFORM
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1493,7 +1495,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
|||||||
/* The queue contains data again. Loop back to try and read the
|
/* The queue contains data again. Loop back to try and read the
|
||||||
* data. */
|
* data. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1505,7 +1507,7 @@ BaseType_t xQueueReceive( QueueHandle_t xQueue,
|
|||||||
/* Timed out. If there is no data in the queue exit, otherwise loop
|
/* Timed out. If there is no data in the queue exit, otherwise loop
|
||||||
* back and attempt to read the data. */
|
* back and attempt to read the data. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1645,7 +1647,7 @@ BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
|
|||||||
/* Interrupts and other tasks can give to and take from the semaphore
|
/* Interrupts and other tasks can give to and take from the semaphore
|
||||||
* now the critical section has been exited. */
|
* now the critical section has been exited. */
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -1682,7 +1684,7 @@ BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
|
|||||||
|
|
||||||
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
if( xTaskResumeAll() == pdFALSE )
|
if( xTaskResumeAll() == pdFALSE )
|
||||||
@@ -1690,6 +1692,7 @@ BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ESP_PLATFORM
|
#ifndef ESP_PLATFORM
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1702,7 +1705,7 @@ BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
|
|||||||
/* There was no timeout and the semaphore count was not 0, so
|
/* There was no timeout and the semaphore count was not 0, so
|
||||||
* attempt to take the semaphore again. */
|
* attempt to take the semaphore again. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1713,7 +1716,7 @@ BaseType_t xQueueSemaphoreTake( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
/* Timed out. */
|
/* Timed out. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1860,7 +1863,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
|||||||
/* Interrupts and other tasks can send to and receive from the queue
|
/* Interrupts and other tasks can send to and receive from the queue
|
||||||
* now the critical section has been exited. */
|
* now the critical section has been exited. */
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskENTER_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -1877,7 +1880,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
|||||||
traceBLOCKING_ON_QUEUE_PEEK( pxQueue );
|
traceBLOCKING_ON_QUEUE_PEEK( pxQueue );
|
||||||
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
if( xTaskResumeAll() == pdFALSE )
|
if( xTaskResumeAll() == pdFALSE )
|
||||||
@@ -1885,6 +1888,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
|||||||
{
|
{
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef ESP_PLATFORM
|
#ifndef ESP_PLATFORM
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1897,7 +1901,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
|||||||
/* There is data in the queue now, so don't enter the blocked
|
/* There is data in the queue now, so don't enter the blocked
|
||||||
* state, instead return to try and obtain the data. */
|
* state, instead return to try and obtain the data. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -1909,7 +1913,7 @@ BaseType_t xQueuePeek( QueueHandle_t xQueue,
|
|||||||
/* The timeout has expired. If there is still no data in the queue
|
/* The timeout has expired. If there is still no data in the queue
|
||||||
* exit, otherwise go back and try to read the data again. */
|
* exit, otherwise go back and try to read the data again. */
|
||||||
prvUnlockQueue( pxQueue );
|
prvUnlockQueue( pxQueue );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL( &( pxQueue->xQueueLock ) );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -2019,6 +2023,7 @@ BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue,
|
|||||||
xReturn = pdFAIL;
|
xReturn = pdFAIL;
|
||||||
traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue );
|
traceQUEUE_RECEIVE_FROM_ISR_FAILED( pxQueue );
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL_ISR( &( pxQueue->xQueueLock ) );
|
taskEXIT_CRITICAL_ISR( &( pxQueue->xQueueLock ) );
|
||||||
}
|
}
|
||||||
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );
|
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );
|
||||||
@@ -2456,6 +2461,7 @@ static void prvUnlockQueue( Queue_t * const pxQueue )
|
|||||||
static BaseType_t prvIsQueueEmpty( const Queue_t * pxQueue )
|
static BaseType_t prvIsQueueEmpty( const Queue_t * pxQueue )
|
||||||
{
|
{
|
||||||
BaseType_t xReturn;
|
BaseType_t xReturn;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &( ( ( Queue_t * ) pxQueue )->xQueueLock ) );
|
taskENTER_CRITICAL( &( ( ( Queue_t * ) pxQueue )->xQueueLock ) );
|
||||||
{
|
{
|
||||||
if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 )
|
if( pxQueue->uxMessagesWaiting == ( UBaseType_t ) 0 )
|
||||||
@@ -2833,6 +2839,7 @@ BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue )
|
|||||||
UBaseType_t ux;
|
UBaseType_t ux;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xQueueRegistryLock );
|
taskENTER_CRITICAL( &xQueueRegistryLock );
|
||||||
|
|
||||||
/* See if there is an empty space in the registry. A NULL name denotes
|
/* See if there is an empty space in the registry. A NULL name denotes
|
||||||
* a free slot. */
|
* a free slot. */
|
||||||
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
|
for( ux = ( UBaseType_t ) 0U; ux < ( UBaseType_t ) configQUEUE_REGISTRY_SIZE; ux++ )
|
||||||
@@ -2851,6 +2858,7 @@ BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2881,6 +2889,7 @@ BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
||||||
|
|
||||||
return pcReturn;
|
return pcReturn;
|
||||||
@@ -2917,8 +2926,8 @@ BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
|
||||||
|
|
||||||
|
taskEXIT_CRITICAL( &xQueueRegistryLock );
|
||||||
} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */
|
} /*lint !e818 xQueue could not be pointer to const because it is a typedef. */
|
||||||
|
|
||||||
#endif /* configQUEUE_REGISTRY_SIZE */
|
#endif /* configQUEUE_REGISTRY_SIZE */
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -61,7 +62,7 @@
|
|||||||
/*lint -save -e9026 Function like macros allowed and needed here so they can be overridden. */
|
/*lint -save -e9026 Function like macros allowed and needed here so they can be overridden. */
|
||||||
|
|
||||||
#ifndef sbRECEIVE_COMPLETED
|
#ifndef sbRECEIVE_COMPLETED
|
||||||
#ifdef ESP_PLATFORM // IDF-3775
|
#ifdef ESP_PLATFORM /* IDF-3775 */
|
||||||
#define sbRECEIVE_COMPLETED( pxStreamBuffer ) \
|
#define sbRECEIVE_COMPLETED( pxStreamBuffer ) \
|
||||||
taskENTER_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) ); \
|
taskENTER_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) ); \
|
||||||
{ \
|
{ \
|
||||||
@@ -74,7 +75,7 @@
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
taskEXIT_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) );
|
taskEXIT_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) );
|
||||||
#else
|
#else /* ifdef ESP_PLATFORM */
|
||||||
#define sbRECEIVE_COMPLETED( pxStreamBuffer ) \
|
#define sbRECEIVE_COMPLETED( pxStreamBuffer ) \
|
||||||
vTaskSuspendAll(); \
|
vTaskSuspendAll(); \
|
||||||
{ \
|
{ \
|
||||||
@@ -115,7 +116,7 @@
|
|||||||
* or #defined the notification macro away, them provide a default implementation
|
* or #defined the notification macro away, them provide a default implementation
|
||||||
* that uses task notifications. */
|
* that uses task notifications. */
|
||||||
#ifndef sbSEND_COMPLETED
|
#ifndef sbSEND_COMPLETED
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
#define sbSEND_COMPLETED( pxStreamBuffer ) \
|
#define sbSEND_COMPLETED( pxStreamBuffer ) \
|
||||||
taskENTER_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) ); \
|
taskENTER_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) ); \
|
||||||
{ \
|
{ \
|
||||||
@@ -128,7 +129,7 @@
|
|||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
taskEXIT_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) );
|
taskEXIT_CRITICAL( &( pxStreamBuffer->xStreamBufferLock ) );
|
||||||
#else
|
#else /* ifdef ESP_PLATFORM */
|
||||||
#define sbSEND_COMPLETED( pxStreamBuffer ) \
|
#define sbSEND_COMPLETED( pxStreamBuffer ) \
|
||||||
vTaskSuspendAll(); \
|
vTaskSuspendAll(); \
|
||||||
{ \
|
{ \
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -403,6 +404,7 @@ PRIVILEGED_DATA static List_t * volatile pxOverflowDelayedTaskList; /*< Poi
|
|||||||
PRIVILEGED_DATA static List_t xPendingReadyList[ configNUM_CORES ]; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready list when the scheduler is resumed. */
|
PRIVILEGED_DATA static List_t xPendingReadyList[ configNUM_CORES ]; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready list when the scheduler is resumed. */
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* Spinlock required for SMP critical sections. This lock protects all of the
|
/* Spinlock required for SMP critical sections. This lock protects all of the
|
||||||
* kernel's data structures such as various tasks lists, flags, and tick counts. */
|
* kernel's data structures such as various tasks lists, flags, and tick counts. */
|
||||||
PRIVILEGED_DATA static portMUX_TYPE xKernelLock = portMUX_INITIALIZER_UNLOCKED;
|
PRIVILEGED_DATA static portMUX_TYPE xKernelLock = portMUX_INITIALIZER_UNLOCKED;
|
||||||
@@ -458,9 +460,9 @@ PRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended[configNUM_CORES
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// per-CPU flags indicating that we are doing context switch, it is used by apptrace and sysview modules
|
/* per-CPU flags indicating that we are doing context switch, it is used by apptrace and sysview modules */
|
||||||
// in order to avoid calls of vPortYield from traceTASK_SWITCHED_IN/OUT when waiting
|
/* in order to avoid calls of vPortYield from traceTASK_SWITCHED_IN/OUT when waiting */
|
||||||
// for locks to be free or for host to read full trace buffer
|
/* for locks to be free or for host to read full trace buffer */
|
||||||
PRIVILEGED_DATA static volatile BaseType_t xSwitchingContext[ configNUM_CORES ] = { pdFALSE };
|
PRIVILEGED_DATA static volatile BaseType_t xSwitchingContext[ configNUM_CORES ] = { pdFALSE };
|
||||||
|
|
||||||
/*lint -restore */
|
/*lint -restore */
|
||||||
@@ -470,7 +472,8 @@ PRIVILEGED_DATA static volatile BaseType_t xSwitchingContext[ configNUM_CORES ]
|
|||||||
/* Callback function prototypes. --------------------------*/
|
/* Callback function prototypes. --------------------------*/
|
||||||
#if ( configCHECK_FOR_STACK_OVERFLOW > 0 )
|
#if ( configCHECK_FOR_STACK_OVERFLOW > 0 )
|
||||||
|
|
||||||
extern void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName );
|
extern void vApplicationStackOverflowHook( TaskHandle_t xTask,
|
||||||
|
char * pcTaskName );
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -482,7 +485,9 @@ PRIVILEGED_DATA static volatile BaseType_t xSwitchingContext[ configNUM_CORES ]
|
|||||||
|
|
||||||
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
#if ( configSUPPORT_STATIC_ALLOCATION == 1 )
|
||||||
|
|
||||||
extern void vApplicationGetIdleTaskMemory( StaticTask_t **ppxIdleTaskTCBBuffer, StackType_t **ppxIdleTaskStackBuffer, uint32_t *pulIdleTaskStackSize ); /*lint !e526 Symbol not defined as it is an application callback. */
|
extern void vApplicationGetIdleTaskMemory( StaticTask_t ** ppxIdleTaskTCBBuffer,
|
||||||
|
StackType_t ** ppxIdleTaskStackBuffer,
|
||||||
|
uint32_t * pulIdleTaskStackSize ); /*lint !e526 Symbol not defined as it is an application callback. */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1129,7 +1134,6 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
|||||||
#if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS == 1 )
|
#if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS == 1 )
|
||||||
pxNewTCB->pvThreadLocalStoragePointersDelCallback[ x ] = NULL;
|
pxNewTCB->pvThreadLocalStoragePointersDelCallback[ x ] = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1262,17 +1266,17 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
* so far. */
|
* so far. */
|
||||||
if( xSchedulerRunning == pdFALSE )
|
if( xSchedulerRunning == pdFALSE )
|
||||||
{
|
{
|
||||||
if( ( pxCurrentTCB[ 0 ] != NULL )
|
if( ( pxCurrentTCB[ 0 ] != NULL ) &&
|
||||||
&& ( taskCAN_RUN_ON_CORE( 0, pxNewTCB->xCoreID ) == pdTRUE )
|
( taskCAN_RUN_ON_CORE( 0, pxNewTCB->xCoreID ) == pdTRUE ) &&
|
||||||
&& ( pxCurrentTCB[ 0 ]->uxPriority <= pxNewTCB->uxPriority ) )
|
( pxCurrentTCB[ 0 ]->uxPriority <= pxNewTCB->uxPriority ) )
|
||||||
{
|
{
|
||||||
pxCurrentTCB[ 0 ] = pxNewTCB;
|
pxCurrentTCB[ 0 ] = pxNewTCB;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
else if( ( pxCurrentTCB[ 1 ] != NULL )
|
else if( ( pxCurrentTCB[ 1 ] != NULL ) &&
|
||||||
&& ( taskCAN_RUN_ON_CORE( 1, pxNewTCB->xCoreID ) == pdTRUE )
|
( taskCAN_RUN_ON_CORE( 1, pxNewTCB->xCoreID ) == pdTRUE ) &&
|
||||||
&& ( pxCurrentTCB[ 1 ]->uxPriority <= pxNewTCB->uxPriority ) )
|
( pxCurrentTCB[ 1 ]->uxPriority <= pxNewTCB->uxPriority ) )
|
||||||
{
|
{
|
||||||
pxCurrentTCB[ 1 ] = pxNewTCB;
|
pxCurrentTCB[ 1 ] = pxNewTCB;
|
||||||
}
|
}
|
||||||
@@ -1320,7 +1324,6 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
}
|
}
|
||||||
@@ -1349,9 +1352,9 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
xYieldRequiredCurrentCore = pdTRUE;
|
xYieldRequiredCurrentCore = pdTRUE;
|
||||||
}
|
}
|
||||||
/* If the target task can run on the other core, and has a higher priority then the other core, and the other core has not suspended scheduling, the yield the other core */
|
/* If the target task can run on the other core, and has a higher priority then the other core, and the other core has not suspended scheduling, the yield the other core */
|
||||||
else if( ( ( xTaskCoreID == !xCurCoreID ) || ( xTaskCoreID == tskNO_AFFINITY ) )
|
else if( ( ( xTaskCoreID == !xCurCoreID ) || ( xTaskCoreID == tskNO_AFFINITY ) ) &&
|
||||||
&& ( uxTaskPriority > pxCurrentTCB[ !xCurCoreID ]->uxPriority )
|
( uxTaskPriority > pxCurrentTCB[ !xCurCoreID ]->uxPriority ) &&
|
||||||
&& ( uxSchedulerSuspended[ !xCurCoreID ] == ( UBaseType_t ) pdFALSE ) )
|
( uxSchedulerSuspended[ !xCurCoreID ] == ( UBaseType_t ) pdFALSE ) )
|
||||||
{
|
{
|
||||||
/* Signal the other core to yield */
|
/* Signal the other core to yield */
|
||||||
vPortYieldOtherCore( !xCurCoreID );
|
vPortYieldOtherCore( !xCurCoreID );
|
||||||
@@ -1456,15 +1459,15 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, !xCurCoreID ) )
|
if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, !xCurCoreID ) )
|
||||||
{
|
{
|
||||||
/* SMP case of deleting a task running on a different core. Same issue
|
/* SMP case of deleting a task running on a different core. Same issue
|
||||||
as a task deleting itself, but we need to send a yield to this task now
|
* as a task deleting itself, but we need to send a yield to this task now
|
||||||
before we release xKernelLock.
|
* before we release xKernelLock.
|
||||||
|
*
|
||||||
Specifically there is a case where the other core may already be spinning on
|
* Specifically there is a case where the other core may already be spinning on
|
||||||
xKernelLock waiting to go into a blocked state. A check is added in
|
* xKernelLock waiting to go into a blocked state. A check is added in
|
||||||
prvAddCurrentTaskToDelayedList() to prevent it from removing itself from
|
* prvAddCurrentTaskToDelayedList() to prevent it from removing itself from
|
||||||
xTasksWaitingTermination list in this case (instead it will immediately
|
* xTasksWaitingTermination list in this case (instead it will immediately
|
||||||
release xKernelLock again and be yielded before the FreeRTOS function
|
* release xKernelLock again and be yielded before the FreeRTOS function
|
||||||
returns.) */
|
* returns.) */
|
||||||
vPortYieldOtherCore( !xCurCoreID );
|
vPortYieldOtherCore( !xCurCoreID );
|
||||||
}
|
}
|
||||||
#endif /* configNUM_CORES > 1 */
|
#endif /* configNUM_CORES > 1 */
|
||||||
@@ -1481,7 +1484,8 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
}
|
}
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( xFreeNow == pdTRUE ) {
|
if( xFreeNow == pdTRUE )
|
||||||
|
{
|
||||||
#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) && ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) && ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
||||||
prvDeleteTLS( pxTCB );
|
prvDeleteTLS( pxTCB );
|
||||||
#endif
|
#endif
|
||||||
@@ -1494,6 +1498,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
if( xSchedulerRunning != pdFALSE )
|
if( xSchedulerRunning != pdFALSE )
|
||||||
{
|
{
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, xPortGetCoreID() ) )
|
if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, xPortGetCoreID() ) )
|
||||||
{
|
{
|
||||||
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
||||||
@@ -1503,6 +1508,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1512,7 +1518,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
|
|
||||||
#if ( INCLUDE_xTaskDelayUntil == 1 )
|
#if ( INCLUDE_xTaskDelayUntil == 1 )
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
// backward binary compatibility - remove later
|
/* backward binary compatibility - remove later */
|
||||||
#undef vTaskDelayUntil
|
#undef vTaskDelayUntil
|
||||||
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
||||||
const TickType_t xTimeIncrement )
|
const TickType_t xTimeIncrement )
|
||||||
@@ -1531,7 +1537,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
configASSERT( ( xTimeIncrement > 0U ) );
|
configASSERT( ( xTimeIncrement > 0U ) );
|
||||||
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -1591,7 +1597,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
xAlreadyYielded = pdFALSE;
|
xAlreadyYielded = pdFALSE;
|
||||||
#else
|
#else
|
||||||
@@ -1625,7 +1631,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
if( xTicksToDelay > ( TickType_t ) 0U )
|
if( xTicksToDelay > ( TickType_t ) 0U )
|
||||||
{
|
{
|
||||||
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
configASSERT( xTaskGetSchedulerState() != taskSCHEDULER_SUSPENDED );
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -1642,7 +1648,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
* executing task. */
|
* executing task. */
|
||||||
prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );
|
prvAddCurrentTaskToDelayedList( xTicksToDelay, pdFALSE );
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
xAlreadyYielded = pdFALSE;
|
xAlreadyYielded = pdFALSE;
|
||||||
#else
|
#else
|
||||||
@@ -1679,7 +1685,8 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
|
|
||||||
configASSERT( pxTCB );
|
configASSERT( pxTCB );
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xKernelLock ); //Need critical section incase either core context switches in between
|
taskENTER_CRITICAL( &xKernelLock ); /*Need critical section incase either core context switches in between */
|
||||||
|
|
||||||
if( taskIS_CURRENTLY_RUNNING( pxTCB ) )
|
if( taskIS_CURRENTLY_RUNNING( pxTCB ) )
|
||||||
{
|
{
|
||||||
/* The task calling this function is querying its own state. */
|
/* The task calling this function is querying its own state. */
|
||||||
@@ -1756,6 +1763,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
eReturn = eReady;
|
eReturn = eReady;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
return eReturn;
|
return eReturn;
|
||||||
@@ -1899,6 +1907,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
* is ready to execute. */
|
* is ready to execute. */
|
||||||
xYieldRequired = pdTRUE;
|
xYieldRequired = pdTRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
else if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, 1 ) )
|
else if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, 1 ) )
|
||||||
{
|
{
|
||||||
@@ -2092,6 +2101,7 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
else if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, !xPortGetCoreID() ) )
|
else if( taskIS_CURRENTLY_RUNNING_ON_CORE( pxTCB, !xPortGetCoreID() ) )
|
||||||
{
|
{
|
||||||
@@ -2140,8 +2150,8 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB )
|
|||||||
{
|
{
|
||||||
/* Has the task already been resumed from within an ISR? */
|
/* Has the task already been resumed from within an ISR? */
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
if( ( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 0 ], &( pxTCB->xEventListItem ) ) == pdFALSE )
|
if( ( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 0 ], &( pxTCB->xEventListItem ) ) == pdFALSE ) &&
|
||||||
&& ( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 1 ], &( pxTCB->xEventListItem ) ) == pdFALSE ) )
|
( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 1 ], &( pxTCB->xEventListItem ) ) == pdFALSE ) )
|
||||||
#else
|
#else
|
||||||
if( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 0 ], &( pxTCB->xEventListItem ) ) == pdFALSE )
|
if( listIS_CONTAINED_WITHIN( &xPendingReadyList[ 0 ], &( pxTCB->xEventListItem ) ) == pdFALSE )
|
||||||
#endif
|
#endif
|
||||||
@@ -2399,7 +2409,7 @@ void vTaskStartScheduler( void )
|
|||||||
* structure specific to the task that will run first.
|
* structure specific to the task that will run first.
|
||||||
* See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html
|
* See the third party link http://www.nadler.com/embedded/newlibAndFreeRTOS.html
|
||||||
* for additional information. */
|
* for additional information. */
|
||||||
// _impure_ptr = &( pxCurrentTCB[xPortGetCoreID()]->xNewLib_reent );
|
/* _impure_ptr = &( pxCurrentTCB[xPortGetCoreID()]->xNewLib_reent ); */
|
||||||
}
|
}
|
||||||
#endif /* configUSE_NEWLIB_REENTRANT */
|
#endif /* configUSE_NEWLIB_REENTRANT */
|
||||||
|
|
||||||
@@ -2462,6 +2472,7 @@ void vTaskSuspendAll( void )
|
|||||||
* https://goo.gl/wu4acr */
|
* https://goo.gl/wu4acr */
|
||||||
|
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
|
|
||||||
/* For SMP, although each core has their own uxSchedulerSuspended, we still
|
/* For SMP, although each core has their own uxSchedulerSuspended, we still
|
||||||
* need enter a critical section when accessing. */
|
* need enter a critical section when accessing. */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
@@ -2614,6 +2625,7 @@ BaseType_t xTaskResumeAll( void )
|
|||||||
* they should be processed now. This ensures the tick count does
|
* they should be processed now. This ensures the tick count does
|
||||||
* not slip, and that any delayed tasks are resumed at the correct
|
* not slip, and that any delayed tasks are resumed at the correct
|
||||||
* time. */
|
* time. */
|
||||||
|
|
||||||
/* Core 0 is solely responsible for managing tick count, thus it
|
/* Core 0 is solely responsible for managing tick count, thus it
|
||||||
* must be the only core to unwind the pended ticks */
|
* must be the only core to unwind the pended ticks */
|
||||||
if( xCoreID == 0 )
|
if( xCoreID == 0 )
|
||||||
@@ -2824,7 +2836,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
/* Task names will be truncated to configMAX_TASK_NAME_LEN - 1 bytes. */
|
/* Task names will be truncated to configMAX_TASK_NAME_LEN - 1 bytes. */
|
||||||
configASSERT( strlen( pcNameToQuery ) < configMAX_TASK_NAME_LEN );
|
configASSERT( strlen( pcNameToQuery ) < configMAX_TASK_NAME_LEN );
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -2874,7 +2886,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -2894,7 +2906,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
{
|
{
|
||||||
UBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES;
|
UBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES;
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -2957,7 +2969,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -3000,6 +3012,7 @@ char * pcTaskGetName( TaskHandle_t xTaskToQuery ) /*lint !e971 Unqualified char
|
|||||||
/* For SMP, we require a critical section to access xTickCount */
|
/* For SMP, we require a critical section to access xTickCount */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Correct the tick count value after a period during which the tick
|
/* Correct the tick count value after a period during which the tick
|
||||||
* was suppressed. Note this does *not* call the tick hook function for
|
* was suppressed. Note this does *not* call the tick hook function for
|
||||||
* each stepped tick. */
|
* each stepped tick. */
|
||||||
@@ -3030,6 +3043,7 @@ BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp )
|
|||||||
* the scheduler is suspended so the ticks are executed in xTaskResumeAll(). */
|
* the scheduler is suspended so the ticks are executed in xTaskResumeAll(). */
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* For SMP, we still require a critical section to access xPendedTicks even
|
/* For SMP, we still require a critical section to access xPendedTicks even
|
||||||
* if the scheduler is disabled. */
|
* if the scheduler is disabled. */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
@@ -3053,7 +3067,7 @@ BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp )
|
|||||||
|
|
||||||
configASSERT( pxTCB );
|
configASSERT( pxTCB );
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -3120,7 +3134,7 @@ BaseType_t xTaskCatchUpTicks( TickType_t xTicksToCatchUp )
|
|||||||
xReturn = pdFAIL;
|
xReturn = pdFAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -3152,6 +3166,7 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
traceTASK_INCREMENT_TICK( xTickCount );
|
traceTASK_INCREMENT_TICK( xTickCount );
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* We need a critical section here as we are about to access kernel data
|
/* We need a critical section here as we are about to access kernel data
|
||||||
* structures:
|
* structures:
|
||||||
* - Other cores could be accessing them simultaneously
|
* - Other cores could be accessing them simultaneously
|
||||||
@@ -3248,10 +3263,11 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
* priority that is equal to or higher than the
|
* priority that is equal to or higher than the
|
||||||
* currently executing task. */
|
* currently executing task. */
|
||||||
#if defined( ESP_PLATFORM ) && ( configNUM_CORES > 1 )
|
#if defined( ESP_PLATFORM ) && ( configNUM_CORES > 1 )
|
||||||
|
|
||||||
/* Since this function is only run on core 0, we
|
/* Since this function is only run on core 0, we
|
||||||
* only need to switch contexts if the unblocked task
|
* only need to switch contexts if the unblocked task
|
||||||
* can run on core 0. */
|
* can run on core 0. */
|
||||||
if( ( pxTCB->xCoreID == 0 || pxTCB->xCoreID == tskNO_AFFINITY ) && (pxTCB->uxPriority >= pxCurrentTCB[ 0 ]->uxPriority) )
|
if( ( ( pxTCB->xCoreID == 0 ) || ( pxTCB->xCoreID == tskNO_AFFINITY ) ) && ( pxTCB->uxPriority >= pxCurrentTCB[ 0 ]->uxPriority ) )
|
||||||
#else
|
#else
|
||||||
if( pxTCB->uxPriority >= pxCurrentTCB[ 0 ]->uxPriority )
|
if( pxTCB->uxPriority >= pxCurrentTCB[ 0 ]->uxPriority )
|
||||||
#endif
|
#endif
|
||||||
@@ -3352,6 +3368,7 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
* execution */
|
* execution */
|
||||||
BaseType_t xCoreID = xPortGetCoreID();
|
BaseType_t xCoreID = xPortGetCoreID();
|
||||||
BaseType_t xSwitchRequired = pdFALSE;
|
BaseType_t xSwitchRequired = pdFALSE;
|
||||||
|
|
||||||
/* This function should never be called by Core 0. */
|
/* This function should never be called by Core 0. */
|
||||||
configASSERT( xCoreID != 0 );
|
configASSERT( xCoreID != 0 );
|
||||||
|
|
||||||
@@ -3379,11 +3396,13 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
if( uxTopReadyPriority > pxCurrentTCB[ xCoreID ]->uxPriority )
|
if( uxTopReadyPriority > pxCurrentTCB[ xCoreID ]->uxPriority )
|
||||||
{
|
{
|
||||||
xSwitchRequired = pdTRUE;
|
xSwitchRequired = pdTRUE;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* if ( configUSE_PREEMPTION == 1 ) */
|
||||||
|
|
||||||
/* Tasks of equal priority to the currently running task will share
|
/* Tasks of equal priority to the currently running task will share
|
||||||
* processing time (time slice) if preemption is on, and the application
|
* processing time (time slice) if preemption is on, and the application
|
||||||
@@ -3433,7 +3452,8 @@ BaseType_t xTaskIncrementTick( void )
|
|||||||
|
|
||||||
#if ( configUSE_APPLICATION_TASK_TAG == 1 )
|
#if ( configUSE_APPLICATION_TASK_TAG == 1 )
|
||||||
|
|
||||||
void vTaskSetApplicationTaskTag( TaskHandle_t xTask, TaskHookFunction_t pxHookFunction )
|
void vTaskSetApplicationTaskTag( TaskHandle_t xTask,
|
||||||
|
TaskHookFunction_t pxHookFunction )
|
||||||
{
|
{
|
||||||
TCB_t * xTCB;
|
TCB_t * xTCB;
|
||||||
|
|
||||||
@@ -3562,6 +3582,7 @@ static void taskSelectHighestPriorityTaskSMP( void )
|
|||||||
|
|
||||||
/* Search for tasks, starting form the highest ready priority. If nothing is
|
/* Search for tasks, starting form the highest ready priority. If nothing is
|
||||||
* found, we eventually default to the IDLE tasks at priority 0 */
|
* found, we eventually default to the IDLE tasks at priority 0 */
|
||||||
|
|
||||||
for( uxCurPriority = uxTopReadyPriority; uxCurPriority >= 0 && xTaskScheduled == pdFALSE; uxCurPriority-- )
|
for( uxCurPriority = uxTopReadyPriority; uxCurPriority >= 0 && xTaskScheduled == pdFALSE; uxCurPriority-- )
|
||||||
{
|
{
|
||||||
/* Check if current priority has one or more ready tasks. Skip if none */
|
/* Check if current priority has one or more ready tasks. Skip if none */
|
||||||
@@ -3588,6 +3609,7 @@ static void taskSelectHighestPriorityTaskSMP( void )
|
|||||||
TCB_t * pxTCBFirst;
|
TCB_t * pxTCBFirst;
|
||||||
listGET_OWNER_OF_NEXT_ENTRY( pxTCBCur, &( pxReadyTasksLists[ uxCurPriority ] ) );
|
listGET_OWNER_OF_NEXT_ENTRY( pxTCBCur, &( pxReadyTasksLists[ uxCurPriority ] ) );
|
||||||
pxTCBFirst = pxTCBCur;
|
pxTCBFirst = pxTCBCur;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
/* Check if the current task is currently being executed. However, if
|
/* Check if the current task is currently being executed. However, if
|
||||||
@@ -3595,6 +3617,7 @@ static void taskSelectHighestPriorityTaskSMP( void )
|
|||||||
* Todo: Each task can store a xTaskRunState, instead of needing to
|
* Todo: Each task can store a xTaskRunState, instead of needing to
|
||||||
* check each core */
|
* check each core */
|
||||||
UBaseType_t ux;
|
UBaseType_t ux;
|
||||||
|
|
||||||
for( ux = 0; ux < ( UBaseType_t ) configNUM_CORES; ux++ )
|
for( ux = 0; ux < ( UBaseType_t ) configNUM_CORES; ux++ )
|
||||||
{
|
{
|
||||||
if( ux == xCoreID )
|
if( ux == xCoreID )
|
||||||
@@ -3640,12 +3663,14 @@ get_next_task:
|
|||||||
void vTaskSwitchContext( void )
|
void vTaskSwitchContext( void )
|
||||||
{
|
{
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* vTaskSwitchContext is called either from:
|
/* vTaskSwitchContext is called either from:
|
||||||
* - ISR dispatcher when return from an ISR (interrupts will already be disabled)
|
* - ISR dispatcher when return from an ISR (interrupts will already be disabled)
|
||||||
* - vTaskSuspend() which is not in a critical section
|
* - vTaskSuspend() which is not in a critical section
|
||||||
* Therefore, we enter a critical section ISR version to ensure safety */
|
* Therefore, we enter a critical section ISR version to ensure safety */
|
||||||
taskENTER_CRITICAL_ISR( &xKernelLock );
|
taskENTER_CRITICAL_ISR( &xKernelLock );
|
||||||
#endif // ESP_PLATFORM
|
#endif // ESP_PLATFORM
|
||||||
|
|
||||||
if( uxSchedulerSuspended[ xPortGetCoreID() ] != ( UBaseType_t ) pdFALSE )
|
if( uxSchedulerSuspended[ xPortGetCoreID() ] != ( UBaseType_t ) pdFALSE )
|
||||||
{
|
{
|
||||||
/* The scheduler is currently suspended - do not allow a context
|
/* The scheduler is currently suspended - do not allow a context
|
||||||
@@ -3732,6 +3757,7 @@ void vTaskSwitchContext( void )
|
|||||||
#endif /* configUSE_NEWLIB_REENTRANT */
|
#endif /* configUSE_NEWLIB_REENTRANT */
|
||||||
#endif // ESP_PLATFORM
|
#endif // ESP_PLATFORM
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
/* Exit the critical section previously entered */
|
/* Exit the critical section previously entered */
|
||||||
taskEXIT_CRITICAL_ISR( &xKernelLock );
|
taskEXIT_CRITICAL_ISR( &xKernelLock );
|
||||||
@@ -3773,6 +3799,7 @@ void vTaskPlaceOnUnorderedEventList( List_t * pxEventList,
|
|||||||
|
|
||||||
/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by
|
/* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. It is used by
|
||||||
* the event groups implementation. */
|
* the event groups implementation. */
|
||||||
|
|
||||||
/* Note. We currently don't always suspend the scheduler. Todo: IDF-3755
|
/* Note. We currently don't always suspend the scheduler. Todo: IDF-3755
|
||||||
* configASSERT( uxSchedulerSuspended[ xPortGetCoreID() ] != 0 ); */
|
* configASSERT( uxSchedulerSuspended[ xPortGetCoreID() ] != 0 ); */
|
||||||
|
|
||||||
@@ -3796,7 +3823,9 @@ void vTaskPlaceOnUnorderedEventList( List_t * pxEventList,
|
|||||||
|
|
||||||
#if ( configUSE_TIMERS == 1 )
|
#if ( configUSE_TIMERS == 1 )
|
||||||
|
|
||||||
void vTaskPlaceOnEventListRestricted( List_t * const pxEventList, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely )
|
void vTaskPlaceOnEventListRestricted( List_t * const pxEventList,
|
||||||
|
TickType_t xTicksToWait,
|
||||||
|
const BaseType_t xWaitIndefinitely )
|
||||||
{
|
{
|
||||||
configASSERT( pxEventList );
|
configASSERT( pxEventList );
|
||||||
|
|
||||||
@@ -3871,8 +3900,8 @@ BaseType_t xTaskRemoveFromEventList( const List_t * const pxEventList )
|
|||||||
* - The task is pinned, and the pinned core's scheduler is running
|
* - The task is pinned, and the pinned core's scheduler is running
|
||||||
* - The task is unpinned, and at least one of the core's scheduler is running */
|
* - The task is unpinned, and at least one of the core's scheduler is running */
|
||||||
#if ( configNUM_CORES > 1 )
|
#if ( configNUM_CORES > 1 )
|
||||||
if( ( ( uxSchedulerSuspended[ 0 ] == ( UBaseType_t ) pdFALSE ) && ( taskCAN_RUN_ON_CORE( 0, pxUnblockedTCB->xCoreID) == pdTRUE ) )
|
if( ( ( uxSchedulerSuspended[ 0 ] == ( UBaseType_t ) pdFALSE ) && ( taskCAN_RUN_ON_CORE( 0, pxUnblockedTCB->xCoreID ) == pdTRUE ) ) ||
|
||||||
|| ( ( uxSchedulerSuspended[ 1 ] == ( UBaseType_t ) pdFALSE ) && ( taskCAN_RUN_ON_CORE( 1, pxUnblockedTCB->xCoreID) == pdTRUE ) ) )
|
( ( uxSchedulerSuspended[ 1 ] == ( UBaseType_t ) pdFALSE ) && ( taskCAN_RUN_ON_CORE( 1, pxUnblockedTCB->xCoreID ) == pdTRUE ) ) )
|
||||||
#else
|
#else
|
||||||
if( uxSchedulerSuspended[ 0 ] == ( UBaseType_t ) pdFALSE )
|
if( uxSchedulerSuspended[ 0 ] == ( UBaseType_t ) pdFALSE )
|
||||||
#endif /* configNUM_CORES > 1 */
|
#endif /* configNUM_CORES > 1 */
|
||||||
@@ -3967,9 +3996,10 @@ void vTaskRemoveFromUnorderedEventList( ListItem_t * pxEventListItem,
|
|||||||
/* THIS FUNCTION MUST BE CALLED WITH THE KERNEL LOCK ALREADY TAKEN.
|
/* THIS FUNCTION MUST BE CALLED WITH THE KERNEL LOCK ALREADY TAKEN.
|
||||||
* It is used by the event flags implementation, thus those functions
|
* It is used by the event flags implementation, thus those functions
|
||||||
* should call vTaskTakeKernelLock() before calling this function. */
|
* should call vTaskTakeKernelLock() before calling this function. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Todo: IDF-5785
|
* Todo: IDF-5785
|
||||||
configASSERT( uxSchedulerSuspended[ xCurCoreID ] != pdFALSE );
|
* configASSERT( uxSchedulerSuspended[ xCurCoreID ] != pdFALSE );
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Store the new item value in the event list. */
|
/* Store the new item value in the event list. */
|
||||||
@@ -4260,7 +4290,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
|
|
||||||
if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP )
|
if( xExpectedIdleTime >= configEXPECTED_IDLE_TIME_BEFORE_SLEEP )
|
||||||
{
|
{
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -4288,7 +4318,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -4313,6 +4343,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
eSleepModeStatus eReturn = eStandardSleep;
|
eSleepModeStatus eReturn = eStandardSleep;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( listCURRENT_LIST_LENGTH( &xPendingReadyList[ xPortGetCoreID() ] ) != 0 )
|
if( listCURRENT_LIST_LENGTH( &xPendingReadyList[ xPortGetCoreID() ] ) != 0 )
|
||||||
{
|
{
|
||||||
/* A task was made ready while the scheduler was suspended. */
|
/* A task was made ready while the scheduler was suspended. */
|
||||||
@@ -4338,6 +4369,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
return eReturn;
|
return eReturn;
|
||||||
@@ -4350,7 +4382,10 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
|
|
||||||
#if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
#if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
||||||
|
|
||||||
void vTaskSetThreadLocalStoragePointerAndDelCallback( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue , TlsDeleteCallbackFunction_t xDelCallback)
|
void vTaskSetThreadLocalStoragePointerAndDelCallback( TaskHandle_t xTaskToSet,
|
||||||
|
BaseType_t xIndex,
|
||||||
|
void * pvValue,
|
||||||
|
TlsDeleteCallbackFunction_t xDelCallback )
|
||||||
{
|
{
|
||||||
TCB_t * pxTCB;
|
TCB_t * pxTCB;
|
||||||
|
|
||||||
@@ -4364,13 +4399,15 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, BaseType_t xIndex, void *pvValue )
|
void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
|
||||||
|
BaseType_t xIndex,
|
||||||
|
void * pvValue )
|
||||||
{
|
{
|
||||||
vTaskSetThreadLocalStoragePointerAndDelCallback( xTaskToSet, xIndex, pvValue, ( TlsDeleteCallbackFunction_t ) NULL );
|
vTaskSetThreadLocalStoragePointerAndDelCallback( xTaskToSet, xIndex, pvValue, ( TlsDeleteCallbackFunction_t ) NULL );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#else
|
#else /* if ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS ) */
|
||||||
void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
|
void vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
|
||||||
BaseType_t xIndex,
|
BaseType_t xIndex,
|
||||||
void * pvValue )
|
void * pvValue )
|
||||||
@@ -4485,33 +4522,43 @@ static void prvCheckTasksWaitingTermination( void )
|
|||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
{
|
{
|
||||||
xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination );
|
xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination );
|
||||||
|
|
||||||
if( xListIsEmpty == pdFALSE )
|
if( xListIsEmpty == pdFALSE )
|
||||||
{
|
{
|
||||||
/* We only want to kill tasks that ran on this core because e.g. _xt_coproc_release needs to
|
/* We only want to kill tasks that ran on this core because e.g. _xt_coproc_release needs to
|
||||||
be called on the core the process is pinned on, if any */
|
* be called on the core the process is pinned on, if any */
|
||||||
ListItem_t * target = listGET_HEAD_ENTRY( &xTasksWaitingTermination );
|
ListItem_t * target = listGET_HEAD_ENTRY( &xTasksWaitingTermination );
|
||||||
for( ; target != listGET_END_MARKER(&xTasksWaitingTermination); target = listGET_NEXT(target) ){ //Walk the list
|
|
||||||
|
for( ; target != listGET_END_MARKER( &xTasksWaitingTermination ); target = listGET_NEXT( target ) ) /*Walk the list */
|
||||||
|
{
|
||||||
TCB_t * tgt_tcb = ( TCB_t * ) listGET_LIST_ITEM_OWNER( target );
|
TCB_t * tgt_tcb = ( TCB_t * ) listGET_LIST_ITEM_OWNER( target );
|
||||||
int affinity = tgt_tcb->xCoreID;
|
int affinity = tgt_tcb->xCoreID;
|
||||||
//Self deleting tasks are added to Termination List before they switch context. Ensure they aren't still currently running
|
|
||||||
if( pxCurrentTCB[core] == tgt_tcb || (configNUM_CORES > 1 && pxCurrentTCB[!core] == tgt_tcb) ){
|
/*Self deleting tasks are added to Termination List before they switch context. Ensure they aren't still currently running */
|
||||||
continue; //Can't free memory of task that is still running
|
if( ( pxCurrentTCB[ core ] == tgt_tcb ) || ( ( configNUM_CORES > 1 ) && ( pxCurrentTCB[ !core ] == tgt_tcb ) ) )
|
||||||
|
{
|
||||||
|
continue; /*Can't free memory of task that is still running */
|
||||||
}
|
}
|
||||||
if(affinity == core || affinity == tskNO_AFFINITY){ //Find first item not pinned to other core
|
|
||||||
|
if( ( affinity == core ) || ( affinity == tskNO_AFFINITY ) ) /*Find first item not pinned to other core */
|
||||||
|
{
|
||||||
pxTCB = tgt_tcb;
|
pxTCB = tgt_tcb;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(pxTCB != NULL){
|
|
||||||
( void ) uxListRemove( target ); //Remove list item from list
|
if( pxTCB != NULL )
|
||||||
|
{
|
||||||
|
( void ) uxListRemove( target ); /*Remove list item from list */
|
||||||
--uxCurrentNumberOfTasks;
|
--uxCurrentNumberOfTasks;
|
||||||
--uxDeletedTasksWaitingCleanUp;
|
--uxDeletedTasksWaitingCleanUp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
taskEXIT_CRITICAL( &xKernelLock ); //Need to call deletion callbacks outside critical section
|
taskEXIT_CRITICAL( &xKernelLock ); /*Need to call deletion callbacks outside critical section */
|
||||||
|
|
||||||
if (pxTCB != NULL) { //Call deletion callbacks and free TCB memory
|
if( pxTCB != NULL ) /*Call deletion callbacks and free TCB memory */
|
||||||
|
{
|
||||||
#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) && ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
#if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS > 0 ) && ( configTHREAD_LOCAL_STORAGE_DELETE_CALLBACKS )
|
||||||
prvDeleteTLS( pxTCB );
|
prvDeleteTLS( pxTCB );
|
||||||
#endif
|
#endif
|
||||||
@@ -4520,7 +4567,7 @@ static void prvCheckTasksWaitingTermination( void )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
break; //No TCB found that could be freed by this core, break out of loop
|
break; /*No TCB found that could be freed by this core, break out of loop */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4589,7 +4636,7 @@ static void prvCheckTasksWaitingTermination( void )
|
|||||||
* it should be reported as being in the Blocked state. */
|
* it should be reported as being in the Blocked state. */
|
||||||
if( eState == eSuspended )
|
if( eState == eSuspended )
|
||||||
{
|
{
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
vTaskSuspendAll();
|
vTaskSuspendAll();
|
||||||
@@ -4600,7 +4647,7 @@ static void prvCheckTasksWaitingTermination( void )
|
|||||||
pxTaskStatus->eCurrentState = eBlocked;
|
pxTaskStatus->eCurrentState = eBlocked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
@@ -4852,11 +4899,12 @@ BaseType_t xTaskGetAffinity( TaskHandle_t xTask )
|
|||||||
static void prvDeleteTLS( TCB_t * pxTCB )
|
static void prvDeleteTLS( TCB_t * pxTCB )
|
||||||
{
|
{
|
||||||
configASSERT( pxTCB );
|
configASSERT( pxTCB );
|
||||||
|
|
||||||
for( int x = 0; x < configNUM_THREAD_LOCAL_STORAGE_POINTERS; x++ )
|
for( int x = 0; x < configNUM_THREAD_LOCAL_STORAGE_POINTERS; x++ )
|
||||||
{
|
{
|
||||||
if (pxTCB->pvThreadLocalStoragePointersDelCallback[ x ] != NULL) //If del cb is set
|
if( pxTCB->pvThreadLocalStoragePointersDelCallback[ x ] != NULL ) /*If del cb is set */
|
||||||
{
|
{
|
||||||
pxTCB->pvThreadLocalStoragePointersDelCallback[ x ](x, pxTCB->pvThreadLocalStoragePointers[ x ]); //Call del cb
|
pxTCB->pvThreadLocalStoragePointersDelCallback[ x ]( x, pxTCB->pvThreadLocalStoragePointers[ x ] ); /*Call del cb */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4907,8 +4955,9 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
{
|
{
|
||||||
TaskHandle_t xReturn = NULL;
|
TaskHandle_t xReturn = NULL;
|
||||||
|
|
||||||
//Xtensa-specific: the pxCurrentPCB pointer is atomic so we shouldn't need a lock.
|
/*Xtensa-specific: the pxCurrentPCB pointer is atomic so we shouldn't need a lock. */
|
||||||
if (cpuid < configNUM_CORES) {
|
if( cpuid < configNUM_CORES )
|
||||||
|
{
|
||||||
xReturn = pxCurrentTCB[ cpuid ];
|
xReturn = pxCurrentTCB[ cpuid ];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4927,6 +4976,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
|
|
||||||
/* Known issue. This should use critical sections. See IDF-5889 */
|
/* Known issue. This should use critical sections. See IDF-5889 */
|
||||||
state = portSET_INTERRUPT_MASK_FROM_ISR();
|
state = portSET_INTERRUPT_MASK_FROM_ISR();
|
||||||
|
|
||||||
if( xSchedulerRunning == pdFALSE )
|
if( xSchedulerRunning == pdFALSE )
|
||||||
{
|
{
|
||||||
xReturn = taskSCHEDULER_NOT_STARTED;
|
xReturn = taskSCHEDULER_NOT_STARTED;
|
||||||
@@ -4942,6 +4992,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
xReturn = taskSCHEDULER_SUSPENDED;
|
xReturn = taskSCHEDULER_SUSPENDED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
portCLEAR_INTERRUPT_MASK_FROM_ISR( state );
|
portCLEAR_INTERRUPT_MASK_FROM_ISR( state );
|
||||||
|
|
||||||
return xReturn;
|
return xReturn;
|
||||||
@@ -4958,6 +5009,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
BaseType_t xReturn = pdFALSE;
|
BaseType_t xReturn = pdFALSE;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
/* If the mutex was given back by an interrupt while the queue was
|
/* If the mutex was given back by an interrupt while the queue was
|
||||||
* locked then the mutex holder might now be NULL. _RB_ Is this still
|
* locked then the mutex holder might now be NULL. _RB_ Is this still
|
||||||
* needed as interrupts can no longer use mutexes? */
|
* needed as interrupts can no longer use mutexes? */
|
||||||
@@ -5034,6 +5086,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
return xReturn;
|
return xReturn;
|
||||||
@@ -5050,6 +5103,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
BaseType_t xReturn = pdFALSE;
|
BaseType_t xReturn = pdFALSE;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( pxMutexHolder != NULL )
|
if( pxMutexHolder != NULL )
|
||||||
{
|
{
|
||||||
/* A task can only have an inherited priority if it holds the mutex.
|
/* A task can only have an inherited priority if it holds the mutex.
|
||||||
@@ -5116,6 +5170,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
return xReturn;
|
return xReturn;
|
||||||
@@ -5134,6 +5189,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
const UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1;
|
const UBaseType_t uxOnlyOneMutexHeld = ( UBaseType_t ) 1;
|
||||||
|
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( pxMutexHolder != NULL )
|
if( pxMutexHolder != NULL )
|
||||||
{
|
{
|
||||||
/* If pxMutexHolder is not NULL then the holder must hold at least
|
/* If pxMutexHolder is not NULL then the holder must hold at least
|
||||||
@@ -5226,6 +5282,7 @@ static void prvResetNextTaskUnblockTime( void )
|
|||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
}
|
}
|
||||||
|
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5586,10 +5643,12 @@ TickType_t uxTaskResetEventItemValue( void )
|
|||||||
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
/* If xSemaphoreCreateMutex() is called before any tasks have been created
|
||||||
* then pxCurrentTCB will be NULL. */
|
* then pxCurrentTCB will be NULL. */
|
||||||
taskENTER_CRITICAL( &xKernelLock );
|
taskENTER_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
if( pxCurrentTCB[ xPortGetCoreID() ] != NULL )
|
if( pxCurrentTCB[ xPortGetCoreID() ] != NULL )
|
||||||
{
|
{
|
||||||
( pxCurrentTCB[ xPortGetCoreID() ]->uxMutexesHeld )++;
|
( pxCurrentTCB[ xPortGetCoreID() ]->uxMutexesHeld )++;
|
||||||
}
|
}
|
||||||
|
|
||||||
curTCB = pxCurrentTCB[ xPortGetCoreID() ];
|
curTCB = pxCurrentTCB[ xPortGetCoreID() ];
|
||||||
taskEXIT_CRITICAL( &xKernelLock );
|
taskEXIT_CRITICAL( &xKernelLock );
|
||||||
|
|
||||||
@@ -5601,8 +5660,8 @@ TickType_t uxTaskResetEventItemValue( void )
|
|||||||
|
|
||||||
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
|
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3851
|
#ifdef ESP_PLATFORM /* IDF-3851 */
|
||||||
// included here for backward binary compatibility
|
/* included here for backward binary compatibility */
|
||||||
#undef ulTaskNotifyTake
|
#undef ulTaskNotifyTake
|
||||||
uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit,
|
uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit,
|
||||||
TickType_t xTicksToWait )
|
TickType_t xTicksToWait )
|
||||||
@@ -5683,8 +5742,8 @@ TickType_t uxTaskResetEventItemValue( void )
|
|||||||
|
|
||||||
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
|
#if ( configUSE_TASK_NOTIFICATIONS == 1 )
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3851
|
#ifdef ESP_PLATFORM /* IDF-3851 */
|
||||||
// included for backward compatibility
|
/* included for backward compatibility */
|
||||||
#undef xTaskNotifyWait
|
#undef xTaskNotifyWait
|
||||||
BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry,
|
BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry,
|
||||||
uint32_t ulBitsToClearOnExit,
|
uint32_t ulBitsToClearOnExit,
|
||||||
@@ -6202,7 +6261,7 @@ TickType_t uxTaskResetEventItemValue( void )
|
|||||||
return pxTCB->ulRunTimeCounter;
|
return pxTCB->ulRunTimeCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
|
static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
|
||||||
@@ -6216,8 +6275,8 @@ static void prvAddCurrentTaskToDelayedList( TickType_t xTicksToWait,
|
|||||||
if( listIS_CONTAINED_WITHIN( &xTasksWaitingTermination, &( pxCurrentTCB[ xCurCoreID ]->xStateListItem ) ) == pdTRUE )
|
if( listIS_CONTAINED_WITHIN( &xTasksWaitingTermination, &( pxCurrentTCB[ xCurCoreID ]->xStateListItem ) ) == pdTRUE )
|
||||||
{
|
{
|
||||||
/* vTaskDelete() has been called to delete this task. This would have happened from the other core while this task was spinning on xTaskQueueMutex,
|
/* vTaskDelete() has been called to delete this task. This would have happened from the other core while this task was spinning on xTaskQueueMutex,
|
||||||
so don't move the running task to the delayed list - as soon as this core re-enables interrupts this task will
|
* so don't move the running task to the delayed list - as soon as this core re-enables interrupts this task will
|
||||||
be suspended permanently. Todo: IDF-5844. */
|
* be suspended permanently. Todo: IDF-5844. */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
* SPDX-FileContributor: 2016-2022 Espressif Systems (Shanghai) CO LTD
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel V10.4.3
|
* FreeRTOS Kernel V10.4.3
|
||||||
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
@@ -148,6 +149,7 @@
|
|||||||
PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;
|
PRIVILEGED_DATA static TaskHandle_t xTimerTaskHandle = NULL;
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM
|
#ifdef ESP_PLATFORM
|
||||||
|
|
||||||
/* Spinlock required in SMP when accessing the timers. For now we use a single lock
|
/* Spinlock required in SMP when accessing the timers. For now we use a single lock
|
||||||
* Todo: Each timer could possible have its own lock for increased granularity. */
|
* Todo: Each timer could possible have its own lock for increased granularity. */
|
||||||
PRIVILEGED_DATA portMUX_TYPE xTimerLock = portMUX_INITIALIZER_UNLOCKED;
|
PRIVILEGED_DATA portMUX_TYPE xTimerLock = portMUX_INITIALIZER_UNLOCKED;
|
||||||
@@ -646,7 +648,7 @@ PRIVILEGED_DATA portMUX_TYPE xTimerLock = portMUX_INITIALIZER_UNLOCKED;
|
|||||||
|
|
||||||
vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );
|
vQueueWaitForMessageRestricted( xTimerQueue, ( xNextExpireTime - xTimeNow ), xListWasEmpty );
|
||||||
|
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xTimerLock );
|
taskEXIT_CRITICAL( &xTimerLock );
|
||||||
#else
|
#else
|
||||||
if( xTaskResumeAll() == pdFALSE )
|
if( xTaskResumeAll() == pdFALSE )
|
||||||
@@ -658,7 +660,8 @@ PRIVILEGED_DATA portMUX_TYPE xTimerLock = portMUX_INITIALIZER_UNLOCKED;
|
|||||||
* will not cause the task to block. */
|
* will not cause the task to block. */
|
||||||
portYIELD_WITHIN_API();
|
portYIELD_WITHIN_API();
|
||||||
}
|
}
|
||||||
#ifndef ESP_PLATFORM // IDF-3755
|
|
||||||
|
#ifndef ESP_PLATFORM /* IDF-3755 */
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
mtCOVERAGE_TEST_MARKER();
|
mtCOVERAGE_TEST_MARKER();
|
||||||
@@ -668,7 +671,7 @@ PRIVILEGED_DATA portMUX_TYPE xTimerLock = portMUX_INITIALIZER_UNLOCKED;
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef ESP_PLATFORM // IDF-3755
|
#ifdef ESP_PLATFORM /* IDF-3755 */
|
||||||
taskEXIT_CRITICAL( &xTimerLock );
|
taskEXIT_CRITICAL( &xTimerLock );
|
||||||
#else
|
#else
|
||||||
( void ) xTaskResumeAll();
|
( void ) xTaskResumeAll();
|
||||||
|
674
components/freertos/FreeRTOS-Kernel/uncrustify.cfg
Normal file
674
components/freertos/FreeRTOS-Kernel/uncrustify.cfg
Normal file
@@ -0,0 +1,674 @@
|
|||||||
|
# Uncrustify-0.69.0
|
||||||
|
|
||||||
|
newlines = auto # lf/crlf/cr/auto
|
||||||
|
input_tab_size = 4 # unsigned number
|
||||||
|
output_tab_size = 4 # unsigned number
|
||||||
|
string_escape_char = 92 # unsigned number
|
||||||
|
string_escape_char2 = 0 # unsigned number
|
||||||
|
string_replace_tab_chars = false # true/false
|
||||||
|
tok_split_gte = false # true/false
|
||||||
|
disable_processing_cmt = " *INDENT-OFF*" # string
|
||||||
|
enable_processing_cmt = " *INDENT-ON*" # string
|
||||||
|
enable_digraphs = false # true/false
|
||||||
|
utf8_bom = ignore # ignore/add/remove/force
|
||||||
|
utf8_byte = false # true/false
|
||||||
|
utf8_force = false # true/false
|
||||||
|
sp_arith = force # ignore/add/remove/force
|
||||||
|
sp_arith_additive = ignore # ignore/add/remove/force
|
||||||
|
sp_assign = force # ignore/add/remove/force
|
||||||
|
sp_cpp_lambda_assign = ignore # ignore/add/remove/force
|
||||||
|
sp_cpp_lambda_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_assign_default = force # ignore/add/remove/force
|
||||||
|
sp_before_assign = force # ignore/add/remove/force
|
||||||
|
sp_after_assign = force # ignore/add/remove/force
|
||||||
|
sp_enum_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_enum_assign = force # ignore/add/remove/force
|
||||||
|
sp_enum_before_assign = force # ignore/add/remove/force
|
||||||
|
sp_enum_after_assign = force # ignore/add/remove/force
|
||||||
|
sp_enum_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_pp_concat = add # ignore/add/remove/force
|
||||||
|
sp_pp_stringify = add # ignore/add/remove/force
|
||||||
|
sp_before_pp_stringify = ignore # ignore/add/remove/force
|
||||||
|
sp_bool = force # ignore/add/remove/force
|
||||||
|
sp_compare = force # ignore/add/remove/force
|
||||||
|
sp_inside_paren = force # ignore/add/remove/force
|
||||||
|
sp_paren_paren = force # ignore/add/remove/force
|
||||||
|
sp_cparen_oparen = ignore # ignore/add/remove/force
|
||||||
|
sp_balance_nested_parens = false # true/false
|
||||||
|
sp_paren_brace = force # ignore/add/remove/force
|
||||||
|
sp_brace_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_before_ptr_star = force # ignore/add/remove/force
|
||||||
|
sp_before_unnamed_ptr_star = force # ignore/add/remove/force
|
||||||
|
sp_between_ptr_star = remove # ignore/add/remove/force
|
||||||
|
sp_after_ptr_star = force # ignore/add/remove/force
|
||||||
|
sp_after_ptr_block_caret = ignore # ignore/add/remove/force
|
||||||
|
sp_after_ptr_star_qualifier = ignore # ignore/add/remove/force
|
||||||
|
sp_after_ptr_star_func = ignore # ignore/add/remove/force
|
||||||
|
sp_ptr_star_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_before_ptr_star_func = ignore # ignore/add/remove/force
|
||||||
|
sp_before_byref = force # ignore/add/remove/force
|
||||||
|
sp_before_unnamed_byref = ignore # ignore/add/remove/force
|
||||||
|
sp_after_byref = remove # ignore/add/remove/force
|
||||||
|
sp_after_byref_func = remove # ignore/add/remove/force
|
||||||
|
sp_before_byref_func = ignore # ignore/add/remove/force
|
||||||
|
sp_after_type = force # ignore/add/remove/force
|
||||||
|
sp_after_decltype = ignore # ignore/add/remove/force
|
||||||
|
sp_before_template_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_template_angle = ignore # ignore/add/remove/force
|
||||||
|
sp_before_angle = remove # ignore/add/remove/force
|
||||||
|
sp_inside_angle = remove # ignore/add/remove/force
|
||||||
|
sp_inside_angle_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_angle_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_after_angle = force # ignore/add/remove/force
|
||||||
|
sp_angle_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_angle_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_angle_word = ignore # ignore/add/remove/force
|
||||||
|
sp_angle_shift = add # ignore/add/remove/force
|
||||||
|
sp_permit_cpp11_shift = false # true/false
|
||||||
|
sp_before_sparen = remove # ignore/add/remove/force
|
||||||
|
sp_inside_sparen = force # ignore/add/remove/force
|
||||||
|
sp_inside_sparen_open = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_sparen_close = ignore # ignore/add/remove/force
|
||||||
|
sp_after_sparen = force # ignore/add/remove/force
|
||||||
|
sp_sparen_brace = force # ignore/add/remove/force
|
||||||
|
sp_invariant_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_after_invariant_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_special_semi = ignore # ignore/add/remove/force
|
||||||
|
sp_before_semi = remove # ignore/add/remove/force
|
||||||
|
sp_before_semi_for = remove # ignore/add/remove/force
|
||||||
|
sp_before_semi_for_empty = add # ignore/add/remove/force
|
||||||
|
sp_after_semi = add # ignore/add/remove/force
|
||||||
|
sp_after_semi_for = force # ignore/add/remove/force
|
||||||
|
sp_after_semi_for_empty = force # ignore/add/remove/force
|
||||||
|
sp_before_square = remove # ignore/add/remove/force
|
||||||
|
sp_before_squares = remove # ignore/add/remove/force
|
||||||
|
sp_cpp_before_struct_binding = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_square = force # ignore/add/remove/force
|
||||||
|
sp_inside_square_oc_array = ignore # ignore/add/remove/force
|
||||||
|
sp_after_comma = force # ignore/add/remove/force
|
||||||
|
sp_before_comma = remove # ignore/add/remove/force
|
||||||
|
sp_after_mdatype_commas = ignore # ignore/add/remove/force
|
||||||
|
sp_before_mdatype_commas = ignore # ignore/add/remove/force
|
||||||
|
sp_between_mdatype_commas = ignore # ignore/add/remove/force
|
||||||
|
sp_paren_comma = force # ignore/add/remove/force
|
||||||
|
sp_before_ellipsis = ignore # ignore/add/remove/force
|
||||||
|
sp_type_ellipsis = ignore # ignore/add/remove/force
|
||||||
|
sp_type_question = ignore # ignore/add/remove/force
|
||||||
|
sp_paren_ellipsis = ignore # ignore/add/remove/force
|
||||||
|
sp_paren_qualifier = ignore # ignore/add/remove/force
|
||||||
|
sp_paren_noexcept = ignore # ignore/add/remove/force
|
||||||
|
sp_after_class_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_class_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_after_constr_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_constr_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_case_colon = remove # ignore/add/remove/force
|
||||||
|
sp_after_operator = ignore # ignore/add/remove/force
|
||||||
|
sp_after_operator_sym = ignore # ignore/add/remove/force
|
||||||
|
sp_after_operator_sym_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_after_cast = force # ignore/add/remove/force
|
||||||
|
sp_inside_paren_cast = force # ignore/add/remove/force
|
||||||
|
sp_cpp_cast_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_sizeof_paren = remove # ignore/add/remove/force
|
||||||
|
sp_sizeof_ellipsis = ignore # ignore/add/remove/force
|
||||||
|
sp_sizeof_ellipsis_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_decltype_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_after_tag = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_braces_enum = force # ignore/add/remove/force
|
||||||
|
sp_inside_braces_struct = force # ignore/add/remove/force
|
||||||
|
sp_inside_braces_oc_dict = ignore # ignore/add/remove/force
|
||||||
|
sp_after_type_brace_init_lst_open = ignore # ignore/add/remove/force
|
||||||
|
sp_before_type_brace_init_lst_close = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_type_brace_init_lst = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_braces = force # ignore/add/remove/force
|
||||||
|
sp_inside_braces_empty = remove # ignore/add/remove/force
|
||||||
|
sp_type_func = force # ignore/add/remove/force
|
||||||
|
sp_type_brace_init_lst = ignore # ignore/add/remove/force
|
||||||
|
sp_func_proto_paren = remove # ignore/add/remove/force
|
||||||
|
sp_func_proto_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_func_def_paren = remove # ignore/add/remove/force
|
||||||
|
sp_func_def_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_fparens = remove # ignore/add/remove/force
|
||||||
|
sp_inside_fparen = force # ignore/add/remove/force
|
||||||
|
sp_inside_tparen = ignore # ignore/add/remove/force
|
||||||
|
sp_after_tparen_close = ignore # ignore/add/remove/force
|
||||||
|
sp_square_fparen = ignore # ignore/add/remove/force
|
||||||
|
sp_fparen_brace = add # ignore/add/remove/force
|
||||||
|
sp_fparen_brace_initializer = ignore # ignore/add/remove/force
|
||||||
|
sp_fparen_dbrace = ignore # ignore/add/remove/force
|
||||||
|
sp_func_call_paren = remove # ignore/add/remove/force
|
||||||
|
sp_func_call_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_func_call_user_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_func_call_user_inside_fparen = ignore # ignore/add/remove/force
|
||||||
|
sp_func_call_user_paren_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_func_class_paren = remove # ignore/add/remove/force
|
||||||
|
sp_func_class_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
sp_return_paren = remove # ignore/add/remove/force
|
||||||
|
sp_return_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_attribute_paren = remove # ignore/add/remove/force
|
||||||
|
sp_defined_paren = remove # ignore/add/remove/force
|
||||||
|
sp_throw_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_after_throw = ignore # ignore/add/remove/force
|
||||||
|
sp_catch_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_oc_catch_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_oc_classname_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_version_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_scope_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_super_paren = remove # ignore/add/remove/force
|
||||||
|
sp_this_paren = remove # ignore/add/remove/force
|
||||||
|
sp_macro = force # ignore/add/remove/force
|
||||||
|
sp_macro_func = force # ignore/add/remove/force
|
||||||
|
sp_else_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_brace_else = ignore # ignore/add/remove/force
|
||||||
|
sp_brace_typedef = force # ignore/add/remove/force
|
||||||
|
sp_catch_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_oc_catch_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_brace_catch = ignore # ignore/add/remove/force
|
||||||
|
sp_oc_brace_catch = ignore # ignore/add/remove/force
|
||||||
|
sp_finally_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_brace_finally = ignore # ignore/add/remove/force
|
||||||
|
sp_try_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_getset_brace = ignore # ignore/add/remove/force
|
||||||
|
sp_word_brace = add # ignore/add/remove/force
|
||||||
|
sp_word_brace_ns = add # ignore/add/remove/force
|
||||||
|
sp_before_dc = remove # ignore/add/remove/force
|
||||||
|
sp_after_dc = remove # ignore/add/remove/force
|
||||||
|
sp_d_array_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_not = remove # ignore/add/remove/force
|
||||||
|
sp_inv = remove # ignore/add/remove/force
|
||||||
|
sp_addr = remove # ignore/add/remove/force
|
||||||
|
sp_member = remove # ignore/add/remove/force
|
||||||
|
sp_deref = remove # ignore/add/remove/force
|
||||||
|
sp_sign = remove # ignore/add/remove/force
|
||||||
|
sp_incdec = remove # ignore/add/remove/force
|
||||||
|
sp_before_nl_cont = add # ignore/add/remove/force
|
||||||
|
sp_after_oc_scope = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_oc_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_dict_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_oc_dict_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_after_send_oc_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_send_oc_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_type = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_return_type = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_at_sel = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_at_sel_parens = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_oc_at_sel_parens = ignore # ignore/add/remove/force
|
||||||
|
sp_before_oc_block_caret = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_block_caret = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_msg_receiver = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_property = ignore # ignore/add/remove/force
|
||||||
|
sp_after_oc_synchronized = ignore # ignore/add/remove/force
|
||||||
|
sp_cond_colon = force # ignore/add/remove/force
|
||||||
|
sp_cond_colon_before = ignore # ignore/add/remove/force
|
||||||
|
sp_cond_colon_after = ignore # ignore/add/remove/force
|
||||||
|
sp_cond_question = force # ignore/add/remove/force
|
||||||
|
sp_cond_question_before = ignore # ignore/add/remove/force
|
||||||
|
sp_cond_question_after = ignore # ignore/add/remove/force
|
||||||
|
sp_cond_ternary_short = ignore # ignore/add/remove/force
|
||||||
|
sp_case_label = force # ignore/add/remove/force
|
||||||
|
sp_range = ignore # ignore/add/remove/force
|
||||||
|
sp_after_for_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_before_for_colon = ignore # ignore/add/remove/force
|
||||||
|
sp_extern_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_cmt_cpp_start = ignore # ignore/add/remove/force
|
||||||
|
sp_cmt_cpp_doxygen = false # true/false
|
||||||
|
sp_cmt_cpp_qttr = false # true/false
|
||||||
|
sp_endif_cmt = force # ignore/add/remove/force
|
||||||
|
sp_after_new = ignore # ignore/add/remove/force
|
||||||
|
sp_between_new_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_after_newop_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_newop_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_newop_paren_open = ignore # ignore/add/remove/force
|
||||||
|
sp_inside_newop_paren_close = ignore # ignore/add/remove/force
|
||||||
|
sp_before_tr_emb_cmt = force # ignore/add/remove/force
|
||||||
|
sp_num_before_tr_emb_cmt = 1 # unsigned number
|
||||||
|
sp_annotation_paren = ignore # ignore/add/remove/force
|
||||||
|
sp_skip_vbrace_tokens = false # true/false
|
||||||
|
sp_after_noexcept = ignore # ignore/add/remove/force
|
||||||
|
sp_vala_after_translation = ignore # ignore/add/remove/force
|
||||||
|
force_tab_after_define = false # true/false
|
||||||
|
indent_columns = 4 # unsigned number
|
||||||
|
indent_continue = 0 # number
|
||||||
|
indent_continue_class_head = 0 # unsigned number
|
||||||
|
indent_single_newlines = false # true/false
|
||||||
|
indent_param = 0 # unsigned number
|
||||||
|
indent_with_tabs = 0 # unsigned number
|
||||||
|
indent_cmt_with_tabs = false # true/false
|
||||||
|
indent_align_string = true # true/false
|
||||||
|
indent_xml_string = 0 # unsigned number
|
||||||
|
indent_brace = 0 # unsigned number
|
||||||
|
indent_braces = false # true/false
|
||||||
|
indent_braces_no_func = false # true/false
|
||||||
|
indent_braces_no_class = false # true/false
|
||||||
|
indent_braces_no_struct = false # true/false
|
||||||
|
indent_brace_parent = false # true/false
|
||||||
|
indent_paren_open_brace = false # true/false
|
||||||
|
indent_cs_delegate_brace = false # true/false
|
||||||
|
indent_cs_delegate_body = false # true/false
|
||||||
|
indent_namespace = false # true/false
|
||||||
|
indent_namespace_single_indent = false # true/false
|
||||||
|
indent_namespace_level = 0 # unsigned number
|
||||||
|
indent_namespace_limit = 0 # unsigned number
|
||||||
|
indent_extern = false # true/false
|
||||||
|
indent_class = true # true/false
|
||||||
|
indent_class_colon = true # true/false
|
||||||
|
indent_class_on_colon = false # true/false
|
||||||
|
indent_constr_colon = false # true/false
|
||||||
|
indent_ctor_init_leading = 2 # unsigned number
|
||||||
|
indent_ctor_init = 0 # number
|
||||||
|
indent_else_if = false # true/false
|
||||||
|
indent_var_def_blk = 0 # number
|
||||||
|
indent_var_def_cont = false # true/false
|
||||||
|
indent_shift = false # true/false
|
||||||
|
indent_func_def_force_col1 = false # true/false
|
||||||
|
indent_func_call_param = false # true/false
|
||||||
|
indent_func_def_param = false # true/false
|
||||||
|
indent_func_proto_param = false # true/false
|
||||||
|
indent_func_class_param = false # true/false
|
||||||
|
indent_func_ctor_var_param = false # true/false
|
||||||
|
indent_template_param = false # true/false
|
||||||
|
indent_func_param_double = false # true/false
|
||||||
|
indent_func_const = 0 # unsigned number
|
||||||
|
indent_func_throw = 0 # unsigned number
|
||||||
|
indent_member = 3 # unsigned number
|
||||||
|
indent_member_single = false # true/false
|
||||||
|
indent_sing_line_comments = 0 # unsigned number
|
||||||
|
indent_relative_single_line_comments = false # true/false
|
||||||
|
indent_switch_case = 4 # unsigned number
|
||||||
|
indent_switch_pp = true # true/false
|
||||||
|
indent_case_shift = 0 # unsigned number
|
||||||
|
indent_case_brace = 3 # number
|
||||||
|
indent_col1_comment = false # true/false
|
||||||
|
indent_col1_multi_string_literal = false # true/false
|
||||||
|
indent_label = 1 # number
|
||||||
|
indent_access_spec = 1 # number
|
||||||
|
indent_access_spec_body = false # true/false
|
||||||
|
indent_paren_nl = false # true/false
|
||||||
|
indent_paren_close = 0 # unsigned number
|
||||||
|
indent_paren_after_func_def = false # true/false
|
||||||
|
indent_paren_after_func_decl = false # true/false
|
||||||
|
indent_paren_after_func_call = false # true/false
|
||||||
|
indent_comma_paren = false # true/false
|
||||||
|
indent_bool_paren = false # true/false
|
||||||
|
indent_semicolon_for_paren = false # true/false
|
||||||
|
indent_first_bool_expr = false # true/false
|
||||||
|
indent_first_for_expr = false # true/false
|
||||||
|
indent_square_nl = false # true/false
|
||||||
|
indent_preserve_sql = false # true/false
|
||||||
|
indent_align_assign = true # true/false
|
||||||
|
indent_align_paren = true # true/false
|
||||||
|
indent_oc_block = false # true/false
|
||||||
|
indent_oc_block_msg = 0 # unsigned number
|
||||||
|
indent_oc_msg_colon = 0 # unsigned number
|
||||||
|
indent_oc_msg_prioritize_first_colon = true # true/false
|
||||||
|
indent_oc_block_msg_xcode_style = false # true/false
|
||||||
|
indent_oc_block_msg_from_keyword = false # true/false
|
||||||
|
indent_oc_block_msg_from_colon = false # true/false
|
||||||
|
indent_oc_block_msg_from_caret = false # true/false
|
||||||
|
indent_oc_block_msg_from_brace = false # true/false
|
||||||
|
indent_min_vbrace_open = 0 # unsigned number
|
||||||
|
indent_vbrace_open_on_tabstop = false # true/false
|
||||||
|
indent_token_after_brace = true # true/false
|
||||||
|
indent_cpp_lambda_body = false # true/false
|
||||||
|
indent_using_block = true # true/false
|
||||||
|
indent_ternary_operator = 0 # unsigned number
|
||||||
|
indent_off_after_return_new = false # true/false
|
||||||
|
indent_single_after_return = false # true/false
|
||||||
|
indent_ignore_asm_block = false # true/false
|
||||||
|
nl_collapse_empty_body = false # true/false
|
||||||
|
nl_assign_leave_one_liners = true # true/false
|
||||||
|
nl_class_leave_one_liners = true # true/false
|
||||||
|
nl_enum_leave_one_liners = false # true/false
|
||||||
|
nl_getset_leave_one_liners = false # true/false
|
||||||
|
nl_cs_property_leave_one_liners = false # true/false
|
||||||
|
nl_func_leave_one_liners = false # true/false
|
||||||
|
nl_cpp_lambda_leave_one_liners = false # true/false
|
||||||
|
nl_if_leave_one_liners = false # true/false
|
||||||
|
nl_while_leave_one_liners = false # true/false
|
||||||
|
nl_for_leave_one_liners = false # true/false
|
||||||
|
nl_oc_msg_leave_one_liner = false # true/false
|
||||||
|
nl_oc_mdef_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_oc_block_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_oc_interface_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_oc_implementation_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_start_of_file = remove # ignore/add/remove/force
|
||||||
|
nl_start_of_file_min = 0 # unsigned number
|
||||||
|
nl_end_of_file = force # ignore/add/remove/force
|
||||||
|
nl_end_of_file_min = 1 # unsigned number
|
||||||
|
nl_assign_brace = add # ignore/add/remove/force
|
||||||
|
nl_assign_square = ignore # ignore/add/remove/force
|
||||||
|
nl_tsquare_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_after_square_assign = ignore # ignore/add/remove/force
|
||||||
|
nl_fcall_brace = add # ignore/add/remove/force
|
||||||
|
nl_enum_brace = force # ignore/add/remove/force
|
||||||
|
nl_enum_class = ignore # ignore/add/remove/force
|
||||||
|
nl_enum_class_identifier = ignore # ignore/add/remove/force
|
||||||
|
nl_enum_identifier_colon = ignore # ignore/add/remove/force
|
||||||
|
nl_enum_colon_type = ignore # ignore/add/remove/force
|
||||||
|
nl_struct_brace = force # ignore/add/remove/force
|
||||||
|
nl_union_brace = force # ignore/add/remove/force
|
||||||
|
nl_if_brace = add # ignore/add/remove/force
|
||||||
|
nl_brace_else = add # ignore/add/remove/force
|
||||||
|
nl_elseif_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_else_brace = add # ignore/add/remove/force
|
||||||
|
nl_else_if = ignore # ignore/add/remove/force
|
||||||
|
nl_before_if_closing_paren = ignore # ignore/add/remove/force
|
||||||
|
nl_brace_finally = ignore # ignore/add/remove/force
|
||||||
|
nl_finally_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_try_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_getset_brace = force # ignore/add/remove/force
|
||||||
|
nl_for_brace = add # ignore/add/remove/force
|
||||||
|
nl_catch_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_oc_catch_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_brace_catch = ignore # ignore/add/remove/force
|
||||||
|
nl_oc_brace_catch = ignore # ignore/add/remove/force
|
||||||
|
nl_brace_square = ignore # ignore/add/remove/force
|
||||||
|
nl_brace_fparen = ignore # ignore/add/remove/force
|
||||||
|
nl_while_brace = add # ignore/add/remove/force
|
||||||
|
nl_scope_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_unittest_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_version_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_using_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_brace_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_do_brace = add # ignore/add/remove/force
|
||||||
|
nl_brace_while = ignore # ignore/add/remove/force
|
||||||
|
nl_switch_brace = add # ignore/add/remove/force
|
||||||
|
nl_synchronized_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_multi_line_cond = false # true/false
|
||||||
|
nl_multi_line_define = true # true/false
|
||||||
|
nl_before_case = true # true/false
|
||||||
|
nl_after_case = true # true/false
|
||||||
|
nl_case_colon_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_before_throw = ignore # ignore/add/remove/force
|
||||||
|
nl_namespace_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_template_class = ignore # ignore/add/remove/force
|
||||||
|
nl_class_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_class_init_args = ignore # ignore/add/remove/force
|
||||||
|
nl_constr_init_args = ignore # ignore/add/remove/force
|
||||||
|
nl_enum_own_lines = ignore # ignore/add/remove/force
|
||||||
|
nl_func_type_name = remove # ignore/add/remove/force
|
||||||
|
nl_func_type_name_class = ignore # ignore/add/remove/force
|
||||||
|
nl_func_class_scope = ignore # ignore/add/remove/force
|
||||||
|
nl_func_scope_name = ignore # ignore/add/remove/force
|
||||||
|
nl_func_proto_type_name = remove # ignore/add/remove/force
|
||||||
|
nl_func_paren = remove # ignore/add/remove/force
|
||||||
|
nl_func_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_def_paren = remove # ignore/add/remove/force
|
||||||
|
nl_func_def_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_call_paren = ignore # ignore/add/remove/force
|
||||||
|
nl_func_call_paren_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_decl_start = remove # ignore/add/remove/force
|
||||||
|
nl_func_def_start = remove # ignore/add/remove/force
|
||||||
|
nl_func_decl_start_single = ignore # ignore/add/remove/force
|
||||||
|
nl_func_def_start_single = ignore # ignore/add/remove/force
|
||||||
|
nl_func_decl_start_multi_line = false # true/false
|
||||||
|
nl_func_def_start_multi_line = false # true/false
|
||||||
|
nl_func_decl_args = add # ignore/add/remove/force
|
||||||
|
nl_func_def_args = add # ignore/add/remove/force
|
||||||
|
nl_func_decl_args_multi_line = false # true/false
|
||||||
|
nl_func_def_args_multi_line = false # true/false
|
||||||
|
nl_func_decl_end = remove # ignore/add/remove/force
|
||||||
|
nl_func_def_end = remove # ignore/add/remove/force
|
||||||
|
nl_func_decl_end_single = ignore # ignore/add/remove/force
|
||||||
|
nl_func_def_end_single = ignore # ignore/add/remove/force
|
||||||
|
nl_func_decl_end_multi_line = false # true/false
|
||||||
|
nl_func_def_end_multi_line = false # true/false
|
||||||
|
nl_func_decl_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_def_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_call_empty = ignore # ignore/add/remove/force
|
||||||
|
nl_func_call_start = ignore # ignore/add/remove/force
|
||||||
|
nl_func_call_start_multi_line = false # true/false
|
||||||
|
nl_func_call_args_multi_line = false # true/false
|
||||||
|
nl_func_call_end_multi_line = false # true/false
|
||||||
|
nl_oc_msg_args = false # true/false
|
||||||
|
nl_fdef_brace = add # ignore/add/remove/force
|
||||||
|
nl_fdef_brace_cond = ignore # ignore/add/remove/force
|
||||||
|
nl_cpp_ldef_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_return_expr = ignore # ignore/add/remove/force
|
||||||
|
nl_after_semicolon = true # true/false
|
||||||
|
nl_paren_dbrace_open = ignore # ignore/add/remove/force
|
||||||
|
nl_type_brace_init_lst = ignore # ignore/add/remove/force
|
||||||
|
nl_type_brace_init_lst_open = ignore # ignore/add/remove/force
|
||||||
|
nl_type_brace_init_lst_close = ignore # ignore/add/remove/force
|
||||||
|
nl_after_brace_open = true # true/false
|
||||||
|
nl_after_brace_open_cmt = false # true/false
|
||||||
|
nl_after_vbrace_open = false # true/false
|
||||||
|
nl_after_vbrace_open_empty = false # true/false
|
||||||
|
nl_after_brace_close = true # true/false
|
||||||
|
nl_after_vbrace_close = false # true/false
|
||||||
|
nl_brace_struct_var = ignore # ignore/add/remove/force
|
||||||
|
nl_define_macro = false # true/false
|
||||||
|
nl_squeeze_paren_close = false # true/false
|
||||||
|
nl_squeeze_ifdef = true # true/false
|
||||||
|
nl_squeeze_ifdef_top_level = false # true/false
|
||||||
|
nl_before_if = force # ignore/add/remove/force
|
||||||
|
nl_after_if = force # ignore/add/remove/force
|
||||||
|
nl_before_for = force # ignore/add/remove/force
|
||||||
|
nl_after_for = force # ignore/add/remove/force
|
||||||
|
nl_before_while = force # ignore/add/remove/force
|
||||||
|
nl_after_while = force # ignore/add/remove/force
|
||||||
|
nl_before_switch = force # ignore/add/remove/force
|
||||||
|
nl_after_switch = force # ignore/add/remove/force
|
||||||
|
nl_before_synchronized = ignore # ignore/add/remove/force
|
||||||
|
nl_after_synchronized = ignore # ignore/add/remove/force
|
||||||
|
nl_before_do = force # ignore/add/remove/force
|
||||||
|
nl_after_do = force # ignore/add/remove/force
|
||||||
|
nl_before_return = false # true/false
|
||||||
|
nl_after_return = true # true/false
|
||||||
|
nl_ds_struct_enum_cmt = false # true/false
|
||||||
|
nl_ds_struct_enum_close_brace = false # true/false
|
||||||
|
nl_class_colon = ignore # ignore/add/remove/force
|
||||||
|
nl_constr_colon = ignore # ignore/add/remove/force
|
||||||
|
nl_namespace_two_to_one_liner = false # true/false
|
||||||
|
nl_create_if_one_liner = false # true/false
|
||||||
|
nl_create_for_one_liner = false # true/false
|
||||||
|
nl_create_while_one_liner = false # true/false
|
||||||
|
nl_create_func_def_one_liner = false # true/false
|
||||||
|
nl_split_if_one_liner = false # true/false
|
||||||
|
nl_split_for_one_liner = false # true/false
|
||||||
|
nl_split_while_one_liner = false # true/false
|
||||||
|
nl_max = 4 # unsigned number
|
||||||
|
nl_max_blank_in_func = 0 # unsigned number
|
||||||
|
nl_before_func_body_proto = 0 # unsigned number
|
||||||
|
nl_before_func_body_def = 0 # unsigned number
|
||||||
|
nl_before_func_class_proto = 0 # unsigned number
|
||||||
|
nl_before_func_class_def = 0 # unsigned number
|
||||||
|
nl_after_func_proto = 0 # unsigned number
|
||||||
|
nl_after_func_proto_group = 1 # unsigned number
|
||||||
|
nl_after_func_class_proto = 0 # unsigned number
|
||||||
|
nl_after_func_class_proto_group = 0 # unsigned number
|
||||||
|
nl_class_leave_one_liner_groups = false # true/false
|
||||||
|
nl_after_func_body = 0 # unsigned number
|
||||||
|
nl_after_func_body_class = 2 # unsigned number
|
||||||
|
nl_after_func_body_one_liner = 0 # unsigned number
|
||||||
|
nl_func_var_def_blk = 1 # unsigned number
|
||||||
|
nl_typedef_blk_start = 0 # unsigned number
|
||||||
|
nl_typedef_blk_end = 0 # unsigned number
|
||||||
|
nl_typedef_blk_in = 0 # unsigned number
|
||||||
|
nl_var_def_blk_start = 0 # unsigned number
|
||||||
|
nl_var_def_blk_end = 0 # unsigned number
|
||||||
|
nl_var_def_blk_in = 0 # unsigned number
|
||||||
|
nl_before_block_comment = 2 # unsigned number
|
||||||
|
nl_before_c_comment = 0 # unsigned number
|
||||||
|
nl_before_cpp_comment = 0 # unsigned number
|
||||||
|
nl_after_multiline_comment = false # true/false
|
||||||
|
nl_after_label_colon = false # true/false
|
||||||
|
nl_after_struct = 0 # unsigned number
|
||||||
|
nl_before_class = 0 # unsigned number
|
||||||
|
nl_after_class = 0 # unsigned number
|
||||||
|
nl_before_access_spec = 0 # unsigned number
|
||||||
|
nl_after_access_spec = 0 # unsigned number
|
||||||
|
nl_comment_func_def = 0 # unsigned number
|
||||||
|
nl_after_try_catch_finally = 0 # unsigned number
|
||||||
|
nl_around_cs_property = 0 # unsigned number
|
||||||
|
nl_between_get_set = 0 # unsigned number
|
||||||
|
nl_property_brace = ignore # ignore/add/remove/force
|
||||||
|
nl_inside_namespace = 0 # unsigned number
|
||||||
|
eat_blanks_after_open_brace = true # true/false
|
||||||
|
eat_blanks_before_close_brace = true # true/false
|
||||||
|
nl_remove_extra_newlines = 0 # unsigned number
|
||||||
|
nl_after_annotation = ignore # ignore/add/remove/force
|
||||||
|
nl_between_annotation = ignore # ignore/add/remove/force
|
||||||
|
pos_arith = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_assign = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_bool = trail # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_compare = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_conditional = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_enum_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_class_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_constr_comma = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_class_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
pos_constr_colon = ignore # ignore/break/force/lead/trail/join/lead_break/lead_force/trail_break/trail_force
|
||||||
|
code_width = 0 # unsigned number
|
||||||
|
ls_for_split_full = false # true/false
|
||||||
|
ls_func_split_full = false # true/false
|
||||||
|
ls_code_width = false # true/false
|
||||||
|
align_keep_tabs = false # true/false
|
||||||
|
align_with_tabs = false # true/false
|
||||||
|
align_on_tabstop = false # true/false
|
||||||
|
align_number_right = false # true/false
|
||||||
|
align_keep_extra_space = false # true/false
|
||||||
|
align_func_params = false # true/false
|
||||||
|
align_func_params_span = 0 # unsigned number
|
||||||
|
align_func_params_thresh = 0 # number
|
||||||
|
align_func_params_gap = 0 # unsigned number
|
||||||
|
align_constr_value_span = 0 # unsigned number
|
||||||
|
align_constr_value_thresh = 0 # number
|
||||||
|
align_constr_value_gap = 0 # unsigned number
|
||||||
|
align_same_func_call_params = false # true/false
|
||||||
|
align_same_func_call_params_span = 0 # unsigned number
|
||||||
|
align_same_func_call_params_thresh = 0 # number
|
||||||
|
align_var_def_span = 0 # unsigned number
|
||||||
|
align_var_def_star_style = 0 # unsigned number
|
||||||
|
align_var_def_amp_style = 1 # unsigned number
|
||||||
|
align_var_def_thresh = 16 # number
|
||||||
|
align_var_def_gap = 0 # unsigned number
|
||||||
|
align_var_def_colon = false # true/false
|
||||||
|
align_var_def_colon_gap = 0 # unsigned number
|
||||||
|
align_var_def_attribute = false # true/false
|
||||||
|
align_var_def_inline = false # true/false
|
||||||
|
align_assign_span = 0 # unsigned number
|
||||||
|
align_assign_func_proto_span = 0 # unsigned number
|
||||||
|
align_assign_thresh = 12 # number
|
||||||
|
align_assign_decl_func = 0 # unsigned number
|
||||||
|
align_enum_equ_span = 0 # unsigned number
|
||||||
|
align_enum_equ_thresh = 0 # number
|
||||||
|
align_var_class_span = 0 # unsigned number
|
||||||
|
align_var_class_thresh = 0 # number
|
||||||
|
align_var_class_gap = 0 # unsigned number
|
||||||
|
align_var_struct_span = 0 # unsigned number
|
||||||
|
align_var_struct_thresh = 0 # number
|
||||||
|
align_var_struct_gap = 0 # unsigned number
|
||||||
|
align_struct_init_span = 3 # unsigned number
|
||||||
|
align_typedef_span = 5 # unsigned number
|
||||||
|
align_typedef_gap = 3 # unsigned number
|
||||||
|
align_typedef_func = 0 # unsigned number
|
||||||
|
align_typedef_star_style = 1 # unsigned number
|
||||||
|
align_typedef_amp_style = 1 # unsigned number
|
||||||
|
align_right_cmt_span = 3 # unsigned number
|
||||||
|
align_right_cmt_gap = 0 # unsigned number
|
||||||
|
align_right_cmt_mix = false # true/false
|
||||||
|
align_right_cmt_same_level = false # true/false
|
||||||
|
align_right_cmt_at_col = 0 # unsigned number
|
||||||
|
align_func_proto_span = 0 # unsigned number
|
||||||
|
align_func_proto_thresh = 0 # number
|
||||||
|
align_func_proto_gap = 0 # unsigned number
|
||||||
|
align_on_operator = false # true/false
|
||||||
|
align_mix_var_proto = false # true/false
|
||||||
|
align_single_line_func = false # true/false
|
||||||
|
align_single_line_brace = false # true/false
|
||||||
|
align_single_line_brace_gap = 0 # unsigned number
|
||||||
|
align_oc_msg_spec_span = 0 # unsigned number
|
||||||
|
align_nl_cont = true # true/false
|
||||||
|
align_pp_define_together = false # true/false
|
||||||
|
align_pp_define_span = 3 # unsigned number
|
||||||
|
align_pp_define_gap = 4 # unsigned number
|
||||||
|
align_left_shift = true # true/false
|
||||||
|
align_asm_colon = false # true/false
|
||||||
|
align_oc_msg_colon_span = 0 # unsigned number
|
||||||
|
align_oc_msg_colon_first = false # true/false
|
||||||
|
align_oc_decl_colon = false # true/false
|
||||||
|
cmt_width = 0 # unsigned number
|
||||||
|
cmt_reflow_mode = 0 # unsigned number
|
||||||
|
cmt_convert_tab_to_spaces = false # true/false
|
||||||
|
cmt_indent_multi = true # true/false
|
||||||
|
cmt_c_group = false # true/false
|
||||||
|
cmt_c_nl_start = false # true/false
|
||||||
|
cmt_c_nl_end = false # true/false
|
||||||
|
cmt_cpp_to_c = true # true/false
|
||||||
|
cmt_cpp_group = false # true/false
|
||||||
|
cmt_cpp_nl_start = false # true/false
|
||||||
|
cmt_cpp_nl_end = false # true/false
|
||||||
|
cmt_star_cont = true # true/false
|
||||||
|
cmt_sp_before_star_cont = 0 # unsigned number
|
||||||
|
cmt_sp_after_star_cont = 0 # unsigned number
|
||||||
|
cmt_multi_check_last = true # true/false
|
||||||
|
cmt_multi_first_len_minimum = 4 # unsigned number
|
||||||
|
cmt_insert_file_header = "" # string
|
||||||
|
cmt_insert_file_footer = "" # string
|
||||||
|
cmt_insert_func_header = "" # string
|
||||||
|
cmt_insert_class_header = "" # string
|
||||||
|
cmt_insert_oc_msg_header = "" # string
|
||||||
|
cmt_insert_before_preproc = false # true/false
|
||||||
|
cmt_insert_before_inlines = true # true/false
|
||||||
|
cmt_insert_before_ctor_dtor = false # true/false
|
||||||
|
mod_full_brace_do = add # ignore/add/remove/force
|
||||||
|
mod_full_brace_for = add # ignore/add/remove/force
|
||||||
|
mod_full_brace_function = ignore # ignore/add/remove/force
|
||||||
|
mod_full_brace_if = add # ignore/add/remove/force
|
||||||
|
mod_full_brace_if_chain = false # true/false
|
||||||
|
mod_full_brace_if_chain_only = false # true/false
|
||||||
|
mod_full_brace_while = add # ignore/add/remove/force
|
||||||
|
mod_full_brace_using = ignore # ignore/add/remove/force
|
||||||
|
mod_full_brace_nl = 0 # unsigned number
|
||||||
|
mod_full_brace_nl_block_rem_mlcond = false # true/false
|
||||||
|
mod_paren_on_return = ignore # ignore/add/remove/force
|
||||||
|
mod_pawn_semicolon = false # true/false
|
||||||
|
mod_full_paren_if_bool = true # true/false
|
||||||
|
mod_remove_extra_semicolon = true # true/false
|
||||||
|
mod_add_long_function_closebrace_comment = 0 # unsigned number
|
||||||
|
mod_add_long_namespace_closebrace_comment = 0 # unsigned number
|
||||||
|
mod_add_long_class_closebrace_comment = 0 # unsigned number
|
||||||
|
mod_add_long_switch_closebrace_comment = 0 # unsigned number
|
||||||
|
mod_add_long_ifdef_endif_comment = 10 # unsigned number
|
||||||
|
mod_add_long_ifdef_else_comment = 10 # unsigned number
|
||||||
|
mod_sort_import = false # true/false
|
||||||
|
mod_sort_using = false # true/false
|
||||||
|
mod_sort_include = false # true/false
|
||||||
|
mod_move_case_break = false # true/false
|
||||||
|
mod_case_brace = remove # ignore/add/remove/force
|
||||||
|
mod_remove_empty_return = true # true/false
|
||||||
|
mod_enum_last_comma = ignore # ignore/add/remove/force
|
||||||
|
mod_sort_oc_properties = false # true/false
|
||||||
|
mod_sort_oc_property_class_weight = 0 # number
|
||||||
|
mod_sort_oc_property_thread_safe_weight = 0 # number
|
||||||
|
mod_sort_oc_property_readwrite_weight = 0 # number
|
||||||
|
mod_sort_oc_property_reference_weight = 0 # number
|
||||||
|
mod_sort_oc_property_getter_weight = 0 # number
|
||||||
|
mod_sort_oc_property_setter_weight = 0 # number
|
||||||
|
mod_sort_oc_property_nullability_weight = 0 # number
|
||||||
|
pp_indent = force # ignore/add/remove/force
|
||||||
|
pp_indent_at_level = true # true/false
|
||||||
|
pp_indent_count = 4 # unsigned number
|
||||||
|
pp_space = remove # ignore/add/remove/force
|
||||||
|
pp_space_count = 0 # unsigned number
|
||||||
|
pp_indent_region = 0 # number
|
||||||
|
pp_region_indent_code = false # true/false
|
||||||
|
pp_indent_if = 0 # number
|
||||||
|
pp_if_indent_code = true # true/false
|
||||||
|
pp_define_at_level = false # true/false
|
||||||
|
pp_ignore_define_body = false # true/false
|
||||||
|
pp_indent_case = true # true/false
|
||||||
|
pp_indent_func_def = true # true/false
|
||||||
|
pp_indent_extern = true # true/false
|
||||||
|
# pp_indent_brace disabled (default to true) as it was set to false after v10.4.3
|
||||||
|
#pp_indent_brace = false # true/false
|
||||||
|
include_category_0 = "" # string
|
||||||
|
include_category_1 = "" # string
|
||||||
|
include_category_2 = "" # string
|
||||||
|
use_indent_func_call_param = true # true/false
|
||||||
|
use_indent_continue_only_once = false # true/false
|
||||||
|
indent_cpp_lambda_only_once = false # true/false
|
||||||
|
use_options_overriding_for_qt_macros = true # true/false
|
||||||
|
warn_level_tabs_found_in_verbatim_string_literals = 2 # unsigned number
|
@@ -459,6 +459,24 @@ EditorConfig helps developers define and maintain consistent coding styles betwe
|
|||||||
|
|
||||||
For more information, see `EditorConfig <https://editorconfig.org>`_ Website.
|
For more information, see `EditorConfig <https://editorconfig.org>`_ Website.
|
||||||
|
|
||||||
|
Third Party Component Code Styles
|
||||||
|
---------------------------------
|
||||||
|
|
||||||
|
ESP-IDF integrates a number of third party components where these components may have differing code styles.
|
||||||
|
|
||||||
|
FreeRTOS
|
||||||
|
^^^^^^^^
|
||||||
|
|
||||||
|
The code style adopted by FreeRTOS is described in the `FreeRTOS style guide <https://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html#StyleGuide>`_. Formatting of FreeRTOS source code is automated using `Uncrustify <https://github.com/uncrustify/uncrustify>`_, thus a copy of the FreeRTOS code style's Uncrustify configuration (``uncrustify.cfg``) is stored within ESP-IDF FreeRTOS component.
|
||||||
|
|
||||||
|
If a FreeRTOS source file is modified, the updated file can be formatted again by following the steps below:
|
||||||
|
|
||||||
|
1. Ensure that Uncrustify (v0.69.0) is installed on your system
|
||||||
|
2. Run the following command on the update FreeRTOS source file (where ``source.c`` is the path to the source file that requires formatting).
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
uncrustify -c $IDF_PATH/components/freertos/FreeRTOS-Kernel/uncrustify.cfg --replace source.c --no-backup
|
||||||
|
|
||||||
Documenting Code
|
Documenting Code
|
||||||
----------------
|
----------------
|
||||||
|
Reference in New Issue
Block a user