]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/event_groups.c
Add trace macros into the event groups implementation.
[freertos] / FreeRTOS / Source / event_groups.c
index 70011c38864cc68088aad97ac33773768a9541e1..644539965556901cc9870e2fc5938bad2850a833 100644 (file)
@@ -128,6 +128,11 @@ xEVENT_BITS *pxEventBits;
        {\r
                pxEventBits->uxEventBits = 0;\r
                vListInitialise( &( pxEventBits->xTasksWaitingForBits ) );\r
+               traceEVENT_GROUP_CREATE( pxEventBits );         \r
+       }\r
+       else\r
+       {\r
+               traceEVENT_GROUP_CREATE_FAILED();\r
        }\r
 \r
        return ( xEventGroupHandle ) pxEventBits;\r
@@ -148,6 +153,8 @@ portBASE_TYPE xYieldedAlready;
 \r
        vTaskSuspendAll();\r
        {\r
+               traceEVENT_GROUP_SYNC_START( xEventGroup, uxBitsToSet );\r
+\r
                uxOriginalBitValue = pxEventBits->uxEventBits;\r
 \r
                ( void ) xEventGroupSetBits( xEventGroup, uxBitsToSet );\r
@@ -172,6 +179,11 @@ portBASE_TYPE xYieldedAlready;
                                task's event list item so the kernel knows when a match is\r
                                found.  Then enter the blocked state. */\r
                                vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | taskCLEAR_EVENTS_ON_EXIT_BIT | taskWAIT_FOR_ALL_BITS ), xTicksToWait );\r
+\r
+                               /* This is obsolete as it will get set after the task unblocks,\r
+                               but some compilers mistakenly generate a warning about the\r
+                               variable being returned without being set if it is not done. */\r
+                               uxReturn = 0;\r
                        }\r
                        else\r
                        {\r
@@ -209,6 +221,7 @@ portBASE_TYPE xYieldedAlready;
                }\r
        }\r
 \r
+       traceEVENT_GROUP_SYNC_END( xEventGroup, uxReturn );\r
        return uxReturn;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -232,6 +245,8 @@ xEventBitsType uxReturn, uxControlBits = 0;
        {\r
                const xEventBitsType uxCurrentEventBits = pxEventBits->uxEventBits;\r
 \r
+               traceEVENT_GROUP_WAIT_BITS_START( xEventGroup, uxBitsToWaitFor );\r
+\r
                if( xWaitForAllBits == pdFALSE )\r
                {\r
                        /* Task only has to wait for one bit within uxBitsToWaitFor to be set.  Is\r
@@ -288,6 +303,11 @@ xEventBitsType uxReturn, uxControlBits = 0;
                        found.  Then enter the blocked state. */\r
                        vTaskPlaceOnUnorderedEventList( &( pxEventBits->xTasksWaitingForBits ), ( uxBitsToWaitFor | uxControlBits ), xTicksToWait );\r
                        portYIELD_WITHIN_API();\r
+\r
+                       /* This is obsolete as it will get set after the task unblocks, but\r
+                       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
        }\r
        taskEXIT_CRITICAL();\r
@@ -313,6 +333,7 @@ xEventBitsType uxReturn, uxControlBits = 0;
                }\r
        }\r
 \r
+       traceEVENT_GROUP_WAIT_BITS_END( xEventGroup, uxReturn );\r
        return uxReturn;\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -329,6 +350,8 @@ xEventBitsType uxReturn;
        uxBitsToClear = ~uxBitsToClear;\r
        taskENTER_CRITICAL();\r
        {\r
+               traceEVENT_GROUP_CLEAR_BITS( xEventGroup, ~uxBitsToClear );\r
+\r
                /* The value returned is the event group value prior to the bits being\r
                cleared. */\r
                uxReturn = pxEventBits->uxEventBits;\r
@@ -359,6 +382,8 @@ portBASE_TYPE xMatchFound = pdFALSE;
        pxListEnd = listGET_END_MARKER( pxList ); /*lint !e826 !e740 The mini list structure is used as the list end to save RAM.  This is checked and valid. */\r
        vTaskSuspendAll();\r
        {\r
+               traceEVENT_GROUP_SET_BITS( xEventGroup, uxBitsToSet );\r
+\r
                pxListItem = listGET_HEAD_ENTRY( pxList );\r
 \r
                /* Set the bits. */\r
@@ -432,6 +457,8 @@ const xList *pxTasksWaitingForBits = &( pxEventBits->xTasksWaitingForBits );
 \r
        vTaskSuspendAll();\r
        {\r
+               traceEVENT_GROUP_DELETE( xEventGroup );\r
+\r
                while( listCURRENT_LIST_LENGTH( pxTasksWaitingForBits ) > ( unsigned portBASE_TYPE ) 0 )\r
                {\r
                        /* Unblock the task, returning 0 as the event list is being deleted\r