mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-10-31 13:09:38 +00:00 
			
		
		
		
	 5de6a9aff6
			
		
	
	5de6a9aff6
	
	
	
		
			
			This function moves ulTaskNotifyTake()/xTaskNotifyWait() from IDF FreeRTOS `tasks.c` to `freertos_compatibility.c`. These functions were kept for pre-compiled library compatibilty. Move them reduces the kernel source code difference when compared to upstream FreeRTOS.
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
 | |
|  *
 | |
|  * SPDX-License-Identifier: Apache-2.0
 | |
|  */
 | |
| 
 | |
| /*
 | |
|  * FreeRTOS has changed some functions in to macros (and vice-versa) over multiple
 | |
|  * releases. This is not a breaking API change for source code, but may cause issues
 | |
|  * for pre-compiled libraries that call these removed APIs.
 | |
|  *
 | |
|  * This file maintains these legacy APIs until the next ESP-IDF major release.
 | |
|  *
 | |
|  * Todo: Clean up for ESP-IDF v6.0 (IDF-8144)
 | |
|  */
 | |
| 
 | |
| #include "FreeRTOS.h"
 | |
| #include "queue.h"
 | |
| #include "semphr.h"
 | |
| 
 | |
| BaseType_t xQueueGenericReceive( QueueHandle_t xQueue,
 | |
|                                  void * const pvBuffer,
 | |
|                                  TickType_t xTicksToWait,
 | |
|                                  const BaseType_t xPeek )
 | |
| {
 | |
|     if( xPeek == pdTRUE )
 | |
|     {
 | |
|         return xQueuePeek( xQueue, pvBuffer, xTicksToWait );
 | |
|     }
 | |
| 
 | |
|     if( pvBuffer == NULL )
 | |
|     {
 | |
|         return xQueueSemaphoreTake( xQueue, xTicksToWait );
 | |
|     }
 | |
| 
 | |
|     return xQueueReceive( xQueue, pvBuffer, xTicksToWait );
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * vTaskDelayUntil() was deprecated into a macro and replaced by xTaskDelayUntil().
 | |
|  * This is added for pre-compiled libraries that depend on ulTaskNotifyTake()
 | |
|  * being a function.
 | |
|  *
 | |
|  * Todo: Remove this in v6.0 (IDF-3851)
 | |
|  */
 | |
| #undef vTaskDelayUntil
 | |
| void vTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
 | |
|                       const TickType_t xTimeIncrement )
 | |
| {
 | |
|     xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement );
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * ulTaskNotifyTake() was turned into a macro. This is added for pre-compiled
 | |
|  * libraries that depend on ulTaskNotifyTake() being a function.
 | |
|  *
 | |
|  * Todo: Remove this in v6.0 (IDF-3851)
 | |
|  */
 | |
| #undef ulTaskNotifyTake
 | |
| uint32_t ulTaskNotifyTake( BaseType_t xClearCountOnExit,
 | |
|                            TickType_t xTicksToWait )
 | |
| {
 | |
|     return ulTaskGenericNotifyTake( tskDEFAULT_INDEX_TO_NOTIFY, xClearCountOnExit, xTicksToWait );
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * xTaskNotifyWait() was turned into a macro. This is added for pre-compiled
 | |
|  * libraries that depend on xTaskNotifyWait() being a function.
 | |
|  *
 | |
|  * Todo: Remove this in v6.0 (IDF-3851)
 | |
|  */
 | |
| #undef xTaskNotifyWait
 | |
| BaseType_t xTaskNotifyWait( uint32_t ulBitsToClearOnEntry,
 | |
|                             uint32_t ulBitsToClearOnExit,
 | |
|                             uint32_t * pulNotificationValue,
 | |
|                             TickType_t xTicksToWait )
 | |
| {
 | |
|     return xTaskGenericNotifyWait( tskDEFAULT_INDEX_TO_NOTIFY, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
 | |
| }
 |