mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-23 17:17:14 +00:00
Merge branch 'master' into feature/freertos_static_buffers
* master: (117 commits) build system: Add -fno-rtti when compiling C++ code FreeRTOS KConfig: Limit tick rate to 1000Hz bootloader: Fix accidental tabs introduced in !78 build system: Print a WARNING if any submodule is out of date Fix stack overflow message format 'make flash' targets: Print serial port when flashing lwip/esp32: support iperf Add data memory for RMT peripheral syscall write: Should return number of bytes written Also push relevant tags over esp32: add libsmartconfig.a to link libs esp32: not link wps esp32/lib: update wifi lib to a1e5f8b9 esp32: remove esp_wps.h add smartconfig header files(merge this after updating libsmartconfig.a version v2.6.2) esp32/lib: update wifi lib to 3853d7ae Add Comments Modify spinlock error in periph_ctrl.c Define xcoreid offset, add warning in tcb struct wrt the need to also change that define when struct changes components/tcpip_adapter: add some comments ... # Conflicts: # components/freertos/queue.c # components/freertos/tasks.c
This commit is contained in:
@@ -130,6 +130,7 @@ functions but without including stdio.h here. */
|
||||
|
||||
|
||||
|
||||
|
||||
/* Value that can be assigned to the eNotifyState member of the TCB. */
|
||||
typedef enum
|
||||
{
|
||||
@@ -177,7 +178,7 @@ typedef struct tskTaskControlBlock
|
||||
StackType_t *pxStack; /*< Points to the start of the stack. */
|
||||
char pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created. Facilitates debugging only. */ /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
|
||||
BaseType_t xCoreID; /*< Core this task is pinned to */
|
||||
|
||||
/* If this moves around (other than pcTaskName size changes), please change the define in xtensa_vectors.S as well. */
|
||||
#if ( portSTACK_GROWTH > 0 )
|
||||
StackType_t *pxEndOfStack; /*< Points to the end of the stack on architectures where the stack grows up from low memory. */
|
||||
#endif
|
||||
@@ -301,9 +302,7 @@ when the scheduler is unsuspended. The pending ready list itself can only be
|
||||
accessed from a critical section. */
|
||||
PRIVILEGED_DATA static volatile UBaseType_t uxSchedulerSuspended[ portNUM_PROCESSORS ] = { ( UBaseType_t ) pdFALSE };
|
||||
|
||||
/* Muxes used in the task code */
|
||||
PRIVILEGED_DATA static portBASE_TYPE xMutexesInitialised = pdFALSE;
|
||||
/* For now, we use just one mux for all the critical sections. ToDo: give evrything a bit more granularity;
|
||||
/* For now, we use just one mux for all the critical sections. ToDo: give everything a bit more granularity;
|
||||
that could improve performance by not needlessly spinning in spinlocks for unrelated resources. */
|
||||
PRIVILEGED_DATA static portMUX_TYPE xTaskQueueMutex = portMUX_INITIALIZER_UNLOCKED;
|
||||
PRIVILEGED_DATA static portMUX_TYPE xTickCountMutex = portMUX_INITIALIZER_UNLOCKED;
|
||||
@@ -611,15 +610,6 @@ static void prvInitialiseNewTask( TaskFunction_t pxTaskCode,
|
||||
static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode, const BaseType_t xCoreID ) PRIVILEGED_FUNCTION;
|
||||
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
||||
static void vTaskInitializeLocalMuxes( void )
|
||||
{
|
||||
vPortCPUInitializeMutex(&xTaskQueueMutex);
|
||||
vPortCPUInitializeMutex(&xTickCountMutex);
|
||||
xMutexesInitialised = pdTRUE;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
@@ -1195,7 +1185,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
|
||||
TickType_t xTimeToWake;
|
||||
BaseType_t xAlreadyYielded=pdFALSE, xShouldDelay = pdFALSE;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
configASSERT( pxPreviousWakeTime );
|
||||
configASSERT( ( xTimeIncrement > 0U ) );
|
||||
configASSERT( uxSchedulerSuspended[ xPortGetCoreID() ] == 0 );
|
||||
@@ -1365,7 +1355,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
|
||||
List_t *pxStateList;
|
||||
const TCB_t * const pxTCB = ( TCB_t * ) xTask;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
configASSERT( pxTCB );
|
||||
|
||||
if( pxTCB == pxCurrentTCB[ xPortGetCoreID() ] )
|
||||
@@ -1435,7 +1425,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
|
||||
TCB_t *pxTCB;
|
||||
UBaseType_t uxReturn;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
taskENTER_CRITICAL(&xTaskQueueMutex);
|
||||
{
|
||||
/* If null is passed in here then we are changing the
|
||||
@@ -1643,7 +1633,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
|
||||
{
|
||||
TCB_t *pxTCB;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
taskENTER_CRITICAL(&xTaskQueueMutex);
|
||||
{
|
||||
/* If null is passed in here then it is the running task that is
|
||||
@@ -1784,7 +1774,7 @@ static void prvAddNewTaskToReadyList( TCB_t *pxNewTCB, TaskFunction_t pxTaskCode
|
||||
{
|
||||
TCB_t * const pxTCB = ( TCB_t * ) xTaskToResume;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
/* It does not make sense to resume the calling task. */
|
||||
configASSERT( xTaskToResume );
|
||||
|
||||
@@ -2047,10 +2037,6 @@ BaseType_t xAlreadyYielded = pdFALSE;
|
||||
scheduler has been resumed it is safe to move all the pending ready
|
||||
tasks from this list into their appropriate ready list. */
|
||||
|
||||
//This uses a mux, but can be called before tasks are scheduled. Make sure muxes are inited.
|
||||
/* Initialize mutexes, if they're not already initialized. */
|
||||
if (xMutexesInitialised == pdFALSE) vTaskInitializeLocalMuxes();
|
||||
|
||||
taskENTER_CRITICAL(&xTaskQueueMutex);
|
||||
{
|
||||
--uxSchedulerSuspended[ xPortGetCoreID() ];
|
||||
@@ -2190,7 +2176,7 @@ UBaseType_t uxTaskGetNumberOfTasks( void )
|
||||
{
|
||||
UBaseType_t uxTask = 0, uxQueue = configMAX_PRIORITIES;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
vTaskSuspendAll(); //WARNING: This only suspends one CPU. ToDo: suspend others as well. Mux using taskQueueMutex maybe?
|
||||
{
|
||||
/* Is there a space in the array for each task in the system? */
|
||||
@@ -3362,7 +3348,7 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
|
||||
{
|
||||
TCB_t *pxTCB;
|
||||
|
||||
ets_printf("ToDo %s\n", __FUNCTION__);
|
||||
UNTESTED_FUNCTION();
|
||||
/* If null is passed in here then we are deleting ourselves. */
|
||||
pxTCB = prvGetTCBFromHandle( xTaskToModify );
|
||||
|
||||
@@ -3488,6 +3474,18 @@ static void prvAddCurrentTaskToDelayedList( const BaseType_t xCoreID, const Tick
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
BaseType_t xTaskGetAffinity( TaskHandle_t xTask )
|
||||
{
|
||||
TCB_t *pxTCB;
|
||||
UBaseType_t uxReturn;
|
||||
|
||||
pxTCB = prvGetTCBFromHandle( xTask );
|
||||
|
||||
return pxTCB->xCoreID;
|
||||
}
|
||||
/*-----------------------------------------------------------*/
|
||||
|
||||
|
||||
#if ( configUSE_TRACE_FACILITY == 1 )
|
||||
|
||||
static UBaseType_t prvListTaskWithinSingleList( TaskStatus_t *pxTaskStatusArray, List_t *pxList, eTaskState eState )
|
||||
@@ -3495,6 +3493,7 @@ static void prvAddCurrentTaskToDelayedList( const BaseType_t xCoreID, const Tick
|
||||
volatile TCB_t *pxNextTCB, *pxFirstTCB;
|
||||
UBaseType_t uxTask = 0;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
if( listCURRENT_LIST_LENGTH( pxList ) > ( UBaseType_t ) 0 )
|
||||
{
|
||||
listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList );
|
||||
@@ -3601,6 +3600,7 @@ static void prvAddCurrentTaskToDelayedList( const BaseType_t xCoreID, const Tick
|
||||
uint8_t *pucEndOfStack;
|
||||
UBaseType_t uxReturn;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
pxTCB = prvGetTCBFromHandle( xTask );
|
||||
|
||||
#if portSTACK_GROWTH < 0
|
||||
@@ -4050,6 +4050,7 @@ scheduler will re-enable the interrupts instead. */
|
||||
TaskStatus_t *pxTaskStatusArray;
|
||||
volatile UBaseType_t uxArraySize, x;
|
||||
char cStatus;
|
||||
UNTESTED_FUNCTION();
|
||||
|
||||
/*
|
||||
* PLEASE NOTE:
|
||||
@@ -4146,6 +4147,7 @@ scheduler will re-enable the interrupts instead. */
|
||||
volatile UBaseType_t uxArraySize, x;
|
||||
uint32_t ulTotalTime, ulStatsAsPercentage;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
#if( configUSE_TRACE_FACILITY != 1 )
|
||||
{
|
||||
#error configUSE_TRACE_FACILITY must also be set to 1 in FreeRTOSConfig.h to use vTaskGetRunTimeStats().
|
||||
@@ -4306,6 +4308,7 @@ TickType_t uxReturn;
|
||||
TickType_t xTimeToWake;
|
||||
uint32_t ulReturn;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
taskENTER_CRITICAL(&xTaskQueueMutex);
|
||||
{
|
||||
/* Only block if the notification count is not already non-zero. */
|
||||
@@ -4416,6 +4419,7 @@ TickType_t uxReturn;
|
||||
TickType_t xTimeToWake;
|
||||
BaseType_t xReturn;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
taskENTER_CRITICAL(&xTaskQueueMutex);
|
||||
{
|
||||
/* Only block if a notification is not already pending. */
|
||||
@@ -4538,6 +4542,7 @@ TickType_t uxReturn;
|
||||
eNotifyValue eOriginalNotifyState;
|
||||
BaseType_t xReturn = pdPASS;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
configASSERT( xTaskToNotify );
|
||||
pxTCB = ( TCB_t * ) xTaskToNotify;
|
||||
|
||||
@@ -4622,6 +4627,7 @@ TickType_t uxReturn;
|
||||
eNotifyValue eOriginalNotifyState;
|
||||
BaseType_t xReturn = pdPASS;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
configASSERT( xTaskToNotify );
|
||||
|
||||
pxTCB = ( TCB_t * ) xTaskToNotify;
|
||||
@@ -4715,6 +4721,7 @@ TickType_t uxReturn;
|
||||
TCB_t * pxTCB;
|
||||
eNotifyValue eOriginalNotifyState;
|
||||
|
||||
UNTESTED_FUNCTION();
|
||||
configASSERT( xTaskToNotify );
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user