mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 06:11:06 +00:00 
			
		
		
		
	freertos: upgrade to 10.4.3 - xTaskDelayUntil change and a few minor changes
This commit is contained in:
		@@ -53,12 +53,13 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
/* *INDENT-ON* */
 | 
					/* *INDENT-ON* */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
/* for likely and unlikely */
 | 
					/* for likely and unlikely */
 | 
				
			||||||
#include "esp_compiler.h"
 | 
					#include "esp_compiler.h"
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Application specific configuration options. */
 | 
					/* Application specific configuration options. */
 | 
				
			||||||
#include "freertos/FreeRTOSConfig.h"
 | 
					#include "freertos/FreeRTOSConfig.h"
 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Basic FreeRTOS definitions. */
 | 
					/* Basic FreeRTOS definitions. */
 | 
				
			||||||
#include "projdefs.h"
 | 
					#include "projdefs.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -129,8 +130,28 @@
 | 
				
			|||||||
    #define INCLUDE_vTaskSuspend    0
 | 
					    #define INCLUDE_vTaskSuspend    0
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef INCLUDE_vTaskDelayUntil
 | 
					#ifdef INCLUDE_xTaskDelayUntil
 | 
				
			||||||
    #define INCLUDE_vTaskDelayUntil    0
 | 
					    #ifdef INCLUDE_vTaskDelayUntil
 | 
				
			||||||
 | 
					        /* INCLUDE_vTaskDelayUntil was replaced by INCLUDE_xTaskDelayUntil.  Backward
 | 
				
			||||||
 | 
					         * compatibility is maintained if only one or the other is defined, but
 | 
				
			||||||
 | 
					         * there is a conflict if both are defined. */
 | 
				
			||||||
 | 
					        #error INCLUDE_vTaskDelayUntil and INCLUDE_xTaskDelayUntil are both defined.  INCLUDE_vTaskDelayUntil is no longer required and should be removed
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef INCLUDE_xTaskDelayUntil
 | 
				
			||||||
 | 
					    #ifdef INCLUDE_vTaskDelayUntil
 | 
				
			||||||
 | 
					        /* If INCLUDE_vTaskDelayUntil is set but INCLUDE_xTaskDelayUntil is not then
 | 
				
			||||||
 | 
					         * the project's FreeRTOSConfig.h probably pre-dates the introduction of
 | 
				
			||||||
 | 
					         * xTaskDelayUntil and setting INCLUDE_xTaskDelayUntil to whatever
 | 
				
			||||||
 | 
					         * INCLUDE_vTaskDelayUntil is set to will ensure backward compatibility.
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
 | 
					        #define INCLUDE_xTaskDelayUntil INCLUDE_vTaskDelayUntil
 | 
				
			||||||
 | 
					    #endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef INCLUDE_xTaskDelayUntil
 | 
				
			||||||
 | 
					    #define INCLUDE_xTaskDelayUntil    0
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef INCLUDE_vTaskDelay
 | 
					#ifndef INCLUDE_vTaskDelay
 | 
				
			||||||
@@ -888,12 +909,14 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef configSTACK_DEPTH_TYPE
 | 
					#ifndef configSTACK_DEPTH_TYPE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Defaults to uint16_t for backward compatibility, but can be overridden
 | 
					/* Defaults to uint16_t for backward compatibility, but can be overridden
 | 
				
			||||||
 * in FreeRTOSConfig.h if uint16_t is too restrictive. */
 | 
					 * in FreeRTOSConfig.h if uint16_t is too restrictive. */
 | 
				
			||||||
    #define configSTACK_DEPTH_TYPE    uint16_t
 | 
					    #define configSTACK_DEPTH_TYPE    uint16_t
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef configMESSAGE_BUFFER_LENGTH_TYPE
 | 
					#ifndef configMESSAGE_BUFFER_LENGTH_TYPE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Defaults to size_t for backward compatibility, but can be overridden
 | 
					/* Defaults to size_t for backward compatibility, but can be overridden
 | 
				
			||||||
 * in FreeRTOSConfig.h if lengths will always be less than the number of bytes
 | 
					 * in FreeRTOSConfig.h if lengths will always be less than the number of bytes
 | 
				
			||||||
 * in a size_t. */
 | 
					 * in a size_t. */
 | 
				
			||||||
@@ -920,6 +943,7 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( portTICK_TYPE_IS_ATOMIC == 0 )
 | 
					#if ( portTICK_TYPE_IS_ATOMIC == 0 )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Either variables of tick type cannot be read atomically, or
 | 
					/* Either variables of tick type cannot be read atomically, or
 | 
				
			||||||
 * portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when
 | 
					 * portTICK_TYPE_IS_ATOMIC was not set - map the critical sections used when
 | 
				
			||||||
 * the tick count is returned to the standard critical section macros. */
 | 
					 * the tick count is returned to the standard critical section macros. */
 | 
				
			||||||
@@ -1005,9 +1029,11 @@
 | 
				
			|||||||
    #define pxContainer                   pvContainer
 | 
					    #define pxContainer                   pvContainer
 | 
				
			||||||
#endif /* configENABLE_BACKWARD_COMPATIBILITY */
 | 
					#endif /* configENABLE_BACKWARD_COMPATIBILITY */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
#ifndef configESP32_PER_TASK_DATA
 | 
					#ifndef configESP32_PER_TASK_DATA
 | 
				
			||||||
    #define configESP32_PER_TASK_DATA 1
 | 
					    #define configESP32_PER_TASK_DATA 1
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( configUSE_ALTERNATIVE_API != 0 )
 | 
					#if ( configUSE_ALTERNATIVE_API != 0 )
 | 
				
			||||||
    #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0
 | 
					    #error The alternative API was deprecated some time ago, and was removed in FreeRTOS V9.0 0
 | 
				
			||||||
@@ -1246,9 +1272,7 @@ typedef struct xSTATIC_QUEUE
 | 
				
			|||||||
        UBaseType_t uxDummy8;
 | 
					        UBaseType_t uxDummy8;
 | 
				
			||||||
        uint8_t ucDummy9;
 | 
					        uint8_t ucDummy9;
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
    portMUX_TYPE xDummy10;
 | 
					    portMUX_TYPE xDummy10;
 | 
				
			||||||
 | 
					 | 
				
			||||||
} StaticQueue_t;
 | 
					} StaticQueue_t;
 | 
				
			||||||
typedef StaticQueue_t StaticSemaphore_t;
 | 
					typedef StaticQueue_t StaticSemaphore_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1278,9 +1302,7 @@ typedef struct xSTATIC_EVENT_GROUP
 | 
				
			|||||||
    #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
 | 
					    #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
 | 
				
			||||||
        uint8_t ucDummy4;
 | 
					        uint8_t ucDummy4;
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
    portMUX_TYPE xDummy5;
 | 
					    portMUX_TYPE xDummy5;
 | 
				
			||||||
 | 
					 | 
				
			||||||
} StaticEventGroup_t;
 | 
					} StaticEventGroup_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@@ -1332,9 +1354,7 @@ typedef struct xSTATIC_STREAM_BUFFER
 | 
				
			|||||||
    #if ( configUSE_TRACE_FACILITY == 1 )
 | 
					    #if ( configUSE_TRACE_FACILITY == 1 )
 | 
				
			||||||
        UBaseType_t uxDummy4;
 | 
					        UBaseType_t uxDummy4;
 | 
				
			||||||
    #endif
 | 
					    #endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
    portMUX_TYPE xDummy5;
 | 
					    portMUX_TYPE xDummy5;
 | 
				
			||||||
 | 
					 | 
				
			||||||
} StaticStreamBuffer_t;
 | 
					} StaticStreamBuffer_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Message buffers are built on stream buffers. */
 | 
					/* Message buffers are built on stream buffers. */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,8 +80,30 @@ typedef struct QueueDefinition   * QueueSetMemberHandle_t;
 | 
				
			|||||||
/** @endcond */
 | 
					/** @endcond */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Creates a new queue instance.  This allocates the storage required by the
 | 
					 * @cond
 | 
				
			||||||
 * new queue and returns a handle for the queue.
 | 
					 * queue. h
 | 
				
			||||||
 | 
					 * @code{c}
 | 
				
			||||||
 | 
					 * QueueHandle_t xQueueCreate(
 | 
				
			||||||
 | 
					 *                            UBaseType_t uxQueueLength,
 | 
				
			||||||
 | 
					 *                            UBaseType_t uxItemSize
 | 
				
			||||||
 | 
					 *                        );
 | 
				
			||||||
 | 
					 * @endcode
 | 
				
			||||||
 | 
					 * @endcond
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Creates a new queue instance, and returns a handle by which the new queue
 | 
				
			||||||
 | 
					 * can be referenced.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Internally, within the FreeRTOS implementation, queues use two blocks of
 | 
				
			||||||
 | 
					 * memory.  The first block is used to hold the queue's data structures.  The
 | 
				
			||||||
 | 
					 * second block is used to hold items placed into the queue.  If a queue is
 | 
				
			||||||
 | 
					 * created using xQueueCreate() then both blocks of memory are automatically
 | 
				
			||||||
 | 
					 * dynamically allocated inside the xQueueCreate() function.  (see
 | 
				
			||||||
 | 
					 * https://www.FreeRTOS.org/a00111.html).  If a queue is created using
 | 
				
			||||||
 | 
					 * xQueueCreateStatic() then the application writer must provide the memory that
 | 
				
			||||||
 | 
					 * will get used by the queue.  xQueueCreateStatic() therefore allows a queue to
 | 
				
			||||||
 | 
					 * be created without using any dynamic memory allocation.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * https://www.FreeRTOS.org/Embedded-RTOS-Queues.html
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param uxQueueLength The maximum number of items that the queue can contain.
 | 
					 * @param uxQueueLength The maximum number of items that the queue can contain.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
@@ -1562,7 +1584,8 @@ BaseType_t xQueueGiveMutexRecursive( QueueHandle_t xMutex ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 * preferably in ROM/Flash), not on the stack.
 | 
					 * preferably in ROM/Flash), not on the stack.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#if ( configQUEUE_REGISTRY_SIZE > 0 )
 | 
					#if ( configQUEUE_REGISTRY_SIZE > 0 )
 | 
				
			||||||
	void vQueueAddToRegistry( QueueHandle_t xQueue, const char * pcQueueName ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
 | 
					    void vQueueAddToRegistry( QueueHandle_t xQueue,
 | 
				
			||||||
 | 
					                              const char * pcQueueName ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -867,7 +867,10 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 *----------------------------------------------------------*/
 | 
					 *----------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Delay a task for a given number of ticks.
 | 
					 * task. h
 | 
				
			||||||
 | 
					 * @code{c}
 | 
				
			||||||
 | 
					 * void vTaskDelay( const TickType_t xTicksToDelay );
 | 
				
			||||||
 | 
					 * @endcode
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Delay a task for a given number of ticks.  The actual time that the
 | 
					 * Delay a task for a given number of ticks.  The actual time that the
 | 
				
			||||||
 * task remains blocked depends on the tick rate.  The constant
 | 
					 * task remains blocked depends on the tick rate.  The constant
 | 
				
			||||||
@@ -885,7 +888,7 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 * of controlling the frequency of a periodic task as the path taken through the
 | 
					 * of controlling the frequency of a periodic task as the path taken through the
 | 
				
			||||||
 * code, as well as other task and interrupt activity, will effect the frequency
 | 
					 * code, as well as other task and interrupt activity, will effect the frequency
 | 
				
			||||||
 * at which vTaskDelay() gets called and therefore the time at which the task
 | 
					 * at which vTaskDelay() gets called and therefore the time at which the task
 | 
				
			||||||
 * next executes.  See vTaskDelayUntil() for an alternative API function designed
 | 
					 * next executes.  See xTaskDelayUntil() for an alternative API function designed
 | 
				
			||||||
 * to facilitate fixed frequency execution.  It does this by specifying an
 | 
					 * to facilitate fixed frequency execution.  It does this by specifying an
 | 
				
			||||||
 * absolute time (rather than a relative time) at which the calling task should
 | 
					 * absolute time (rather than a relative time) at which the calling task should
 | 
				
			||||||
 * unblock.
 | 
					 * unblock.
 | 
				
			||||||
@@ -917,9 +920,12 @@ void vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
 | 
					void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Delay a task until a specified time.
 | 
					 * task. h
 | 
				
			||||||
 | 
					 * @code{c}
 | 
				
			||||||
 | 
					 * BaseType_t xTaskDelayUntil( TickType_t *pxPreviousWakeTime, const TickType_t xTimeIncrement );
 | 
				
			||||||
 | 
					 * @endcode
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.
 | 
					 * INCLUDE_xTaskDelayUntil must be defined as 1 for this function to be available.
 | 
				
			||||||
 * See the configuration section for more information.
 | 
					 * See the configuration section for more information.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Delay a task until a specified time.  This function can be used by periodic
 | 
					 * Delay a task until a specified time.  This function can be used by periodic
 | 
				
			||||||
@@ -934,22 +940,26 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 * each time it executes].
 | 
					 * each time it executes].
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Whereas vTaskDelay () specifies a wake time relative to the time at which the function
 | 
					 * Whereas vTaskDelay () specifies a wake time relative to the time at which the function
 | 
				
			||||||
 * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to
 | 
					 * is called, xTaskDelayUntil () specifies the absolute (exact) time at which it wishes to
 | 
				
			||||||
 * unblock.
 | 
					 * unblock.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * The constant portTICK_PERIOD_MS can be used to calculate real time from the tick
 | 
					 * The macro pdMS_TO_TICKS() can be used to calculate the number of ticks from a
 | 
				
			||||||
 * rate - with the resolution of one tick period.
 | 
					 * time specified in milliseconds with a resolution of one tick period.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the
 | 
					 * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the
 | 
				
			||||||
 * task was last unblocked.  The variable must be initialised with the current time
 | 
					 * task was last unblocked.  The variable must be initialised with the current time
 | 
				
			||||||
 * prior to its first use (see the example below).  Following this the variable is
 | 
					 * prior to its first use (see the example below).  Following this the variable is
 | 
				
			||||||
 * automatically updated within vTaskDelayUntil ().
 | 
					 * automatically updated within xTaskDelayUntil ().
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @param xTimeIncrement The cycle time period.  The task will be unblocked at
 | 
					 * @param xTimeIncrement The cycle time period.  The task will be unblocked at
 | 
				
			||||||
 * time *pxPreviousWakeTime + xTimeIncrement.  Calling vTaskDelayUntil with the
 | 
					 * time *pxPreviousWakeTime + xTimeIncrement.  Calling xTaskDelayUntil with the
 | 
				
			||||||
 * same xTimeIncrement parameter value will cause the task to execute with
 | 
					 * same xTimeIncrement parameter value will cause the task to execute with
 | 
				
			||||||
 * a fixed interface period.
 | 
					 * a fixed interface period.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 | 
					 * @return Value which can be used to check whether the task was actually delayed.
 | 
				
			||||||
 | 
					 * Will be pdTRUE if the task way delayed and pdFALSE otherwise.  A task will not
 | 
				
			||||||
 | 
					 * be delayed if the next expected wake time is in the past.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 * Example usage:
 | 
					 * Example usage:
 | 
				
			||||||
 * @code{c}
 | 
					 * @code{c}
 | 
				
			||||||
 * // Perform an action every 10 ticks.
 | 
					 * // Perform an action every 10 ticks.
 | 
				
			||||||
@@ -957,15 +967,17 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 * {
 | 
					 * {
 | 
				
			||||||
 * TickType_t xLastWakeTime;
 | 
					 * TickType_t xLastWakeTime;
 | 
				
			||||||
 * const TickType_t xFrequency = 10;
 | 
					 * const TickType_t xFrequency = 10;
 | 
				
			||||||
 | 
					 * BaseType_t xWasDelayed;
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *     // Initialise the xLastWakeTime variable with the current time.
 | 
					 *     // Initialise the xLastWakeTime variable with the current time.
 | 
				
			||||||
 *     xLastWakeTime = xTaskGetTickCount ();
 | 
					 *     xLastWakeTime = xTaskGetTickCount ();
 | 
				
			||||||
 *     for( ;; )
 | 
					 *     for( ;; )
 | 
				
			||||||
 *     {
 | 
					 *     {
 | 
				
			||||||
 *         // Wait for the next cycle.
 | 
					 *         // Wait for the next cycle.
 | 
				
			||||||
 *         vTaskDelayUntil( &xLastWakeTime, xFrequency );
 | 
					 *         xWasDelayed = xTaskDelayUntil( &xLastWakeTime, xFrequency );
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *         // Perform action here.
 | 
					 *         // Perform action here. xWasDelayed value can be used to determine
 | 
				
			||||||
 | 
					 *         // whether a deadline was missed if the code here took too long.
 | 
				
			||||||
 *     }
 | 
					 *     }
 | 
				
			||||||
 * }
 | 
					 * }
 | 
				
			||||||
 * @endcode
 | 
					 * @endcode
 | 
				
			||||||
@@ -974,9 +986,19 @@ void vTaskDelay( const TickType_t xTicksToDelay ) PRIVILEGED_FUNCTION;
 | 
				
			|||||||
 * @endcond
 | 
					 * @endcond
 | 
				
			||||||
 * \ingroup TaskCtrl
 | 
					 * \ingroup TaskCtrl
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | 
					BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | 
				
			||||||
                            const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION;
 | 
					                            const TickType_t xTimeIncrement ) PRIVILEGED_FUNCTION;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * vTaskDelayUntil() is the older version of xTaskDelayUntil() and does not
 | 
				
			||||||
 | 
					 * return a value.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#define vTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement )       \
 | 
				
			||||||
 | 
					{                                                                   \
 | 
				
			||||||
 | 
					    ( void ) xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement ); \
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @cond
 | 
					 * @cond
 | 
				
			||||||
 * task. h
 | 
					 * task. h
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,6 +34,7 @@ entries:
 | 
				
			|||||||
        tasks: xTaskGetCurrentTaskHandleForCPU (default)
 | 
					        tasks: xTaskGetCurrentTaskHandleForCPU (default)
 | 
				
			||||||
        tasks: vTaskDelete (default)
 | 
					        tasks: vTaskDelete (default)
 | 
				
			||||||
        tasks: vTaskDelayUntil (default)
 | 
					        tasks: vTaskDelayUntil (default)
 | 
				
			||||||
 | 
					        tasks: xTaskDelayUntil (default)
 | 
				
			||||||
        tasks: vTaskDelay (default)
 | 
					        tasks: vTaskDelay (default)
 | 
				
			||||||
        tasks: vTaskSuspend (default)
 | 
					        tasks: vTaskSuspend (default)
 | 
				
			||||||
        tasks: xTaskResumeAll (default)
 | 
					        tasks: xTaskResumeAll (default)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1440,19 +1440,36 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB,
 | 
				
			|||||||
#endif /* INCLUDE_vTaskDelete */
 | 
					#endif /* INCLUDE_vTaskDelete */
 | 
				
			||||||
/*-----------------------------------------------------------*/
 | 
					/*-----------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( INCLUDE_vTaskDelayUntil == 1 )
 | 
					#if ( INCLUDE_xTaskDelayUntil == 1 )
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
 | 
					    // backward binary compatibility - remove later
 | 
				
			||||||
 | 
					    #undef vTaskDelayUntil
 | 
				
			||||||
    void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | 
					    void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | 
				
			||||||
                                const TickType_t xTimeIncrement )
 | 
					                                const TickType_t xTimeIncrement )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        xTaskDelayUntil(pxPreviousWakeTime, xTimeIncrement);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    BaseType_t xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | 
				
			||||||
 | 
					                                const TickType_t xTimeIncrement )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        TickType_t xTimeToWake;
 | 
					        TickType_t xTimeToWake;
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
        BaseType_t xShouldDelay = pdFALSE;
 | 
					        BaseType_t xShouldDelay = pdFALSE;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        BaseType_t xAlreadyYielded, xShouldDelay = pdFALSE;
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        configASSERT( pxPreviousWakeTime );
 | 
					        configASSERT( pxPreviousWakeTime );
 | 
				
			||||||
        configASSERT( ( xTimeIncrement > 0U ) );
 | 
					        configASSERT( ( xTimeIncrement > 0U ) );
 | 
				
			||||||
        configASSERT( uxSchedulerSuspended[xPortGetCoreID()] == 0 );
 | 
					        configASSERT( uxSchedulerSuspended[xPortGetCoreID()] == 0 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
        taskENTER_CRITICAL();
 | 
					        taskENTER_CRITICAL();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        vTaskSuspendAll();
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            /* Minor optimisation.  The tick count cannot change in this
 | 
					            /* Minor optimisation.  The tick count cannot change in this
 | 
				
			||||||
             * block. */
 | 
					             * block. */
 | 
				
			||||||
@@ -1508,13 +1525,30 @@ static void prvAddNewTaskToReadyList( TCB_t * pxNewTCB,
 | 
				
			|||||||
                mtCOVERAGE_TEST_MARKER();
 | 
					                mtCOVERAGE_TEST_MARKER();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
        taskEXIT_CRITICAL();
 | 
					        taskEXIT_CRITICAL();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        xAlreadyYielded = xTaskResumeAll();
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Force a reschedule, we may have put ourselves to sleep. */
 | 
					        /* Force a reschedule if xTaskResumeAll has not already done so, we may
 | 
				
			||||||
 | 
					         * have put ourselves to sleep. */
 | 
				
			||||||
 | 
					#ifdef ESP_PLATFORM
 | 
				
			||||||
        portYIELD_WITHIN_API();
 | 
					        portYIELD_WITHIN_API();
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					        if( xAlreadyYielded == pdFALSE )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            portYIELD_WITHIN_API();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            mtCOVERAGE_TEST_MARKER();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					#endif // ESP_PLATFORM
 | 
				
			||||||
 | 
					        return xShouldDelay;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* INCLUDE_vTaskDelayUntil */
 | 
					#endif /* INCLUDE_xTaskDelayUntil */
 | 
				
			||||||
/*-----------------------------------------------------------*/
 | 
					/*-----------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ( INCLUDE_vTaskDelay == 1 )
 | 
					#if ( INCLUDE_vTaskDelay == 1 )
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user