FreeRTOS-Kernel/FreeRTOS/Test/CBMC/patches/0008-Fix-preemption-macro-for-queueYIELD_IF_USING_PREEMPT.patch
chinglee-iot 7adb08eff5
Update single core CMBC and unit test (#1045)
This PR fixes CBMC and unit test for single core FreeRTOS in the FreeRTOS-Kernel PR - https://github.com/FreeRTOS/FreeRTOS-Kernel/pull/716.

- xYieldPendings and xIdleTaskHandles are now an array. Update in FreeRTOS unit test.
-  Update CBMC patches.
2023-07-24 15:42:20 +05:30

25 lines
1,012 B
Diff

diff --git a/FreeRTOS/Source/queue.c b/FreeRTOS/Source/queue.c
index e87db0f45..a5f1ac9d0 100644
--- a/FreeRTOS/Source/queue.c
+++ b/FreeRTOS/Source/queue.c
@@ -88,12 +88,14 @@ typedef struct SemaphoreData
/* If the cooperative scheduler is being used then a yield should not be
* performed just because a higher priority task has been woken. */
#define queueYIELD_IF_USING_PREEMPTION()
-#else
- #if ( configNUMBER_OF_CORES == 1 )
- #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()
- #else /* #if ( configNUMBER_OF_CORES == 1 ) */
- #define queueYIELD_IF_USING_PREEMPTION() vTaskYieldWithinAPI()
- #endif /* #if ( configNUMBER_OF_CORES == 1 ) */
+#endif
+
+#if ( configNUMBER_OF_CORES == 1 ) && ( configUSE_PREEMPTION == 1 )
+ #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()
+#endif
+
+#if ( configNUMBER_OF_CORES > 1 ) && ( configUSE_PREEMPTION == 1 )
+ #define queueYIELD_IF_USING_PREEMPTION() vTaskYieldWithinAPI()
#endif
/*