]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/event_groups.c
Linting.
[freertos] / FreeRTOS / Source / event_groups.c
index b192976aca42b425201aecea9114c5ac2cd3a0ad..a9812df9d993661c580dd3a7369a0fe35a0322ab 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
+    FreeRTOS V8.0.0:rc1 - Copyright (C) 2014 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -87,8 +87,8 @@ privileged Vs unprivileged linkage and placement. */
        #error configUSE_TIMERS must be set to 1 to make the xEventGroupSetBitFromISR() function available.\r
 #endif\r
 \r
-#if ( INCLUDE_xEventGroupSetBitFromISR == 1 ) && ( INCLUDE_xTimerPendFunctionCallFromISR == 0 )\r
-       #error INCLUDE_xTimerPendFunctionCallFromISR must also be set to one to make the xEventGroupSetBitFromISR() function available.\r
+#if ( INCLUDE_xEventGroupSetBitFromISR == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 0 )\r
+       #error INCLUDE_xTimerPendFunctionCall must also be set to one to make the xEventGroupSetBitFromISR() function available.\r
 #endif\r
 \r
 /* The following bit fields convey control information in a task's event list\r
@@ -106,10 +106,15 @@ taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */
        #define eventEVENT_BITS_CONTROL_BYTES   0xff000000UL\r
 #endif\r
 \r
-typedef struct EVENT_GROUP_DEFINITION\r
+typedef struct xEventGroupDefinition\r
 {\r
        EventBits_t uxEventBits;\r
        List_t xTasksWaitingForBits;            /*< List of tasks waiting for a bit to be set. */\r
+\r
+       #if( configUSE_TRACE_FACILITY == 1 )\r
+               UBaseType_t uxEventGroupNumber;\r
+       #endif\r
+\r
 } EventGroup_t;\r
 \r
 /*-----------------------------------------------------------*/\r
@@ -151,6 +156,7 @@ EventBits_t xEventGroupSync( EventGroupHandle_t xEventGroup, const EventBits_t u
 EventBits_t uxOriginalBitValue, uxReturn;\r
 EventGroup_t *pxEventBits = ( EventGroup_t * ) xEventGroup;\r
 BaseType_t xAlreadyYielded;\r
+BaseType_t xTimeoutOccurred = pdFALSE;\r
 \r
        configASSERT( ( uxBitsToWaitFor & eventEVENT_BITS_CONTROL_BYTES ) == 0 );\r
        configASSERT( uxBitsToWaitFor != 0 );\r
@@ -162,8 +168,6 @@ BaseType_t xAlreadyYielded;
 \r
        vTaskSuspendAll();\r
        {\r
-               traceEVENT_GROUP_SYNC_START( xEventGroup, uxBitsToSet );\r
-\r
                uxOriginalBitValue = pxEventBits->uxEventBits;\r
 \r
                ( void ) xEventGroupSetBits( xEventGroup, uxBitsToSet );\r
@@ -183,6 +187,8 @@ BaseType_t xAlreadyYielded;
                {\r
                        if( xTicksToWait != ( TickType_t ) 0 )\r
                        {\r
+                               traceEVENT_GROUP_SYNC_BLOCK( xEventGroup, uxBitsToSet, uxBitsToWaitFor );\r
+\r
                                /* Store the bits that the calling task is waiting for in the\r
                                task's event list item so the kernel knows when a match is\r
                                found.  Then enter the blocked state. */\r
@@ -242,6 +248,8 @@ BaseType_t xAlreadyYielded;
                                }\r
                        }\r
                        taskEXIT_CRITICAL();\r
+\r
+                       xTimeoutOccurred = pdTRUE;\r
                }\r
                else\r
                {\r
@@ -251,7 +259,7 @@ BaseType_t xAlreadyYielded;
                }\r
        }\r
 \r
-       traceEVENT_GROUP_SYNC_END( xEventGroup, uxReturn );\r
+       traceEVENT_GROUP_SYNC_END( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTimeoutOccurred );\r
        return uxReturn;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -261,6 +269,7 @@ EventBits_t xEventGroupWaitBits( EventGroupHandle_t xEventGroup, const EventBits
 EventGroup_t *pxEventBits = ( EventGroup_t * ) xEventGroup;\r
 EventBits_t uxReturn, uxControlBits = 0;\r
 BaseType_t xWaitConditionMet, xAlreadyYielded;\r
+BaseType_t xTimeoutOccurred = pdFALSE;\r
 \r
        /* Check the user is not attempting to wait on the bits used by the kernel\r
        itself, and that at least one bit is being requested. */\r
@@ -276,8 +285,6 @@ BaseType_t xWaitConditionMet, xAlreadyYielded;
        {\r
                const EventBits_t uxCurrentEventBits = pxEventBits->uxEventBits;\r
 \r
-               traceEVENT_GROUP_WAIT_BITS_START( xEventGroup, uxBitsToWaitFor );\r
-\r
                /* Check to see if the wait condition is already met or not. */\r
                xWaitConditionMet = prvTestWaitCondition( uxCurrentEventBits, uxBitsToWaitFor, xWaitForAllBits );\r
 \r
@@ -337,6 +344,8 @@ BaseType_t xWaitConditionMet, xAlreadyYielded;
                        some compilers mistakenly generate a warning about the variable\r
                        being returned without being set if it is not done. */\r
                        uxReturn = 0;\r
+\r
+                       traceEVENT_GROUP_WAIT_BITS_BLOCK( xEventGroup, uxBitsToWaitFor );\r
                }\r
        }\r
        xAlreadyYielded = xTaskResumeAll();\r
@@ -384,6 +393,8 @@ BaseType_t xWaitConditionMet, xAlreadyYielded;
                                }\r
                        }\r
                        taskEXIT_CRITICAL();\r
+\r
+                       xTimeoutOccurred = pdFALSE;\r
                }\r
                else\r
                {\r
@@ -392,8 +403,7 @@ BaseType_t xWaitConditionMet, xAlreadyYielded;
                        uxReturn &= ~eventEVENT_BITS_CONTROL_BYTES;\r
                }\r
        }\r
-\r
-       traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxReturn );\r
+       traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxBitsToWaitFor, xTimeoutOccurred );\r
        return uxReturn;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -558,7 +568,7 @@ const List_t *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );
                        /* Unblock the task, returning 0 as the event list is being deleted\r
                        and     cannot therefore have any bits set. */\r
                        configASSERT( pxTasksWaitingForBits->xListEnd.pxNext != ( ListItem_t * ) &( pxTasksWaitingForBits->xListEnd ) );\r
-                       ( void ) xTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, ( TickType_t ) eventUNBLOCKED_DUE_TO_BIT_SET );\r
+                       ( void ) xTaskRemoveFromUnorderedEventList( pxTasksWaitingForBits->xListEnd.pxNext, eventUNBLOCKED_DUE_TO_BIT_SET );\r
                }\r
 \r
                vPortFree( pxEventBits );\r
@@ -608,5 +618,37 @@ BaseType_t xWaitConditionMet = pdFALSE;
 \r
        return xWaitConditionMet;\r
 }\r
+/*-----------------------------------------------------------*/\r
+\r
+#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_xTimerPendFunctionCall == 1 ) && ( configUSE_TIMERS == 1 ) )\r
+       BaseType_t xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup, const EventBits_t uxBitsToSet, BaseType_t *pxHigherPriorityTaskWoken )\r
+       {\r
+       BaseType_t xReturn;\r
+\r
+               traceEVENT_GROUP_SET_BITS_FROM_ISR( xEventGroup, uxBitsToSet );\r
+               xReturn = xTimerPendFunctionCallFromISR( vEventGroupSetBitsCallback, ( void * ) xEventGroup, ( uint32_t ) uxBitsToSet, pxHigherPriorityTaskWoken );\r
 \r
+               return xReturn;\r
+       }\r
+#endif\r
+/*-----------------------------------------------------------*/\r
+\r
+#if (configUSE_TRACE_FACILITY == 1)\r
+       UBaseType_t uxEventGroupGetNumber( void* xEventGroup )\r
+       {\r
+       UBaseType_t xReturn;\r
+       EventGroup_t *pxEventBits = ( EventGroup_t * ) xEventGroup;\r
+\r
+               if( xEventGroup == NULL )\r
+               {\r
+                       xReturn = 0;\r
+               }\r
+               else\r
+               {\r
+                       xReturn = pxEventBits->uxEventGroupNumber;\r
+               }\r
+\r
+               return xReturn;\r
+       }\r
+#endif\r
 \r