]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/trcKernelPort.c
Final commit before tagging - cosmetic changes only.
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-Trace / trcKernelPort.c
index 427d770e289c989d7bd916c6a3238ae3212fa926..38251c40e7aea7773b34ef34a47fb381a7f5064f 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************\r
- * Tracealyzer v2.4.1 Recorder Library\r
+ * Tracealyzer v2.7.7 Recorder Library\r
  * Percepio AB, www.percepio.com\r
  *\r
  * trcKernelPort.c\r
@@ -31,7 +31,9 @@
  * damages, or the exclusion of implied warranties or limitations on how long an \r
  * implied warranty may last, so the above limitations may not apply to you.\r
  *\r
- * Copyright Percepio AB, 2013.\r
+ * Tabs are used for indent in this file (1 tab = 4 spaces)\r
+ *\r
+ * Copyright Percepio AB, 2012-2015.\r
  * www.percepio.com\r
  ******************************************************************************/\r
 \r
@@ -43,6 +45,8 @@
 \r
 #include "task.h"\r
 \r
+/* For classes implemented as FreeRTOS Queues: \r
+This translates queue.type to the corresponding trace object class. */\r
 traceObjectClass TraceObjectClassTable[5] = {\r
        TRACE_CLASS_QUEUE,\r
        TRACE_CLASS_MUTEX,\r
@@ -51,32 +55,38 @@ traceObjectClass TraceObjectClassTable[5] = {
        TRACE_CLASS_MUTEX\r
 };\r
 \r
+int uiInEventGroupSetBitsFromISR = 0;\r
+\r
 extern unsigned char ucQueueGetQueueType(void*);\r
-extern unsigned char ucQueueGetQueueNumber(void*);\r
+\r
+#if (FREERTOS_VERSION < FREERTOS_VERSION_8_0_OR_LATER)\r
+\r
+extern portBASE_TYPE ucQueueGetQueueNumber(void*);\r
 \r
 objectHandleType prvTraceGetObjectNumber(void* handle)\r
 {\r
-       return ucQueueGetQueueNumber(handle);   \r
+       return (objectHandleType) ucQueueGetQueueNumber(handle);\r
 }\r
 \r
-unsigned char prvTraceGetObjectType(void* handle)\r
-{\r
-       return ucQueueGetQueueType(handle);\r
-}\r
+#else\r
 \r
-objectHandleType prvTraceGetTaskNumber(void* handle)\r
+extern portBASE_TYPE uxQueueGetQueueNumber(void*);\r
+\r
+objectHandleType prvTraceGetObjectNumber(void* handle)\r
 {\r
-       return (objectHandleType)uxTaskGetTaskNumber(handle);\r
+       return (objectHandleType) uxQueueGetQueueNumber(handle);\r
 }\r
 \r
-void prvTraceEnterCritical()\r
+#endif\r
+\r
+unsigned char prvTraceGetObjectType(void* handle)\r
 {\r
-       taskENTER_CRITICAL();\r
+       return ucQueueGetQueueType(handle);\r
 }\r
 \r
-void prvTraceExitCritical()\r
+objectHandleType prvTraceGetTaskNumber(void* handle)\r
 {\r
-       taskEXIT_CRITICAL();\r
+       return (objectHandleType)uxTaskGetTaskNumber(handle);\r
 }\r
 \r
 unsigned char prvTraceIsSchedulerActive()\r
@@ -108,42 +118,50 @@ void vTraceInitObjectPropertyTable()
        RecorderDataPtr->ObjectPropertyTable.NumberOfObjectsPerClass[2] = NMutex;\r
        RecorderDataPtr->ObjectPropertyTable.NumberOfObjectsPerClass[3] = NTask;\r
        RecorderDataPtr->ObjectPropertyTable.NumberOfObjectsPerClass[4] = NISR;\r
+       RecorderDataPtr->ObjectPropertyTable.NumberOfObjectsPerClass[5] = NTimer;\r
+       RecorderDataPtr->ObjectPropertyTable.NumberOfObjectsPerClass[6] = NEventGroup;  \r
        RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[0] = NameLenQueue;\r
        RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[1] = NameLenSemaphore;\r
        RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[2] = NameLenMutex;\r
        RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[3] = NameLenTask;\r
        RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[4] = NameLenISR;\r
+       RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[5] = NameLenTimer;\r
+       RecorderDataPtr->ObjectPropertyTable.NameLengthPerClass[6] = NameLenEventGroup; \r
        RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[0] = PropertyTableSizeQueue;\r
        RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[1] = PropertyTableSizeSemaphore;\r
        RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[2] = PropertyTableSizeMutex;\r
        RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[3] = PropertyTableSizeTask;\r
        RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[4] = PropertyTableSizeISR;\r
+       RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[5] = PropertyTableSizeTimer;\r
+       RecorderDataPtr->ObjectPropertyTable.TotalPropertyBytesPerClass[6] = PropertyTableSizeEventGroup;\r
        RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[0] = StartIndexQueue;\r
        RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[1] = StartIndexSemaphore;\r
        RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[2] = StartIndexMutex;\r
        RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[3] = StartIndexTask;\r
        RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[4] = StartIndexISR;\r
+       RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[5] = StartIndexTimer;\r
+       RecorderDataPtr->ObjectPropertyTable.StartIndexOfClass[6] = StartIndexEventGroup;\r
        RecorderDataPtr->ObjectPropertyTable.ObjectPropertyTableSizeInBytes = TRACE_OBJECT_TABLE_SIZE;\r
 }\r
 \r
 /* Initialization of the handle mechanism, see e.g, xTraceGetObjectHandle */\r
 void vTraceInitObjectHandleStack()\r
 {\r
-       objectHandleStacks.indexOfNextAvailableHandle[0] = 0;\r
-       objectHandleStacks.indexOfNextAvailableHandle[1] = NQueue;\r
-       objectHandleStacks.indexOfNextAvailableHandle[2] = NQueue + NSemaphore;\r
-       objectHandleStacks.indexOfNextAvailableHandle[3] = NQueue + NSemaphore + NMutex;\r
-       objectHandleStacks.indexOfNextAvailableHandle[4] = NQueue + NSemaphore + NMutex + NTask;\r
-       objectHandleStacks.lowestIndexOfClass[0] = 0;\r
-       objectHandleStacks.lowestIndexOfClass[1] = NQueue;\r
-       objectHandleStacks.lowestIndexOfClass[2] = NQueue + NSemaphore;\r
-       objectHandleStacks.lowestIndexOfClass[3] = NQueue + NSemaphore + NMutex;\r
-       objectHandleStacks.lowestIndexOfClass[4] = NQueue + NSemaphore + NMutex + NTask;\r
-    objectHandleStacks.highestIndexOfClass[0] = NQueue - 1;\r
+       objectHandleStacks.indexOfNextAvailableHandle[0] = objectHandleStacks.lowestIndexOfClass[0] = 0;\r
+       objectHandleStacks.indexOfNextAvailableHandle[1] = objectHandleStacks.lowestIndexOfClass[1] = NQueue;\r
+       objectHandleStacks.indexOfNextAvailableHandle[2] = objectHandleStacks.lowestIndexOfClass[2] = NQueue + NSemaphore;\r
+       objectHandleStacks.indexOfNextAvailableHandle[3] = objectHandleStacks.lowestIndexOfClass[3] = NQueue + NSemaphore + NMutex;\r
+       objectHandleStacks.indexOfNextAvailableHandle[4] = objectHandleStacks.lowestIndexOfClass[4] = NQueue + NSemaphore + NMutex + NTask;\r
+       objectHandleStacks.indexOfNextAvailableHandle[5] = objectHandleStacks.lowestIndexOfClass[5] = NQueue + NSemaphore + NMutex + NTask + NISR;\r
+       objectHandleStacks.indexOfNextAvailableHandle[6] = objectHandleStacks.lowestIndexOfClass[6] = NQueue + NSemaphore + NMutex + NTask + NISR + NTimer;\r
+\r
+       objectHandleStacks.highestIndexOfClass[0] = NQueue - 1;\r
        objectHandleStacks.highestIndexOfClass[1] = NQueue + NSemaphore - 1;\r
        objectHandleStacks.highestIndexOfClass[2] = NQueue + NSemaphore + NMutex - 1;\r
        objectHandleStacks.highestIndexOfClass[3] = NQueue + NSemaphore + NMutex + NTask - 1;\r
        objectHandleStacks.highestIndexOfClass[4] = NQueue + NSemaphore + NMutex + NTask + NISR - 1;\r
+       objectHandleStacks.highestIndexOfClass[5] = NQueue + NSemaphore + NMutex + NTask + NISR + NTimer - 1;\r
+       objectHandleStacks.highestIndexOfClass[6] = NQueue + NSemaphore + NMutex + NTask + NISR + NTimer + NEventGroup - 1;\r
 }\r
        \r
 /* Returns the "Not enough handles" error message for this object class */\r
@@ -161,6 +179,10 @@ const char* pszTraceGetErrorNotEnoughHandles(traceObjectClass objectclass)
                return "Not enough MUTEX handles - increase NMutex in trcConfig.h";\r
        case TRACE_CLASS_QUEUE:\r
                return "Not enough QUEUE handles - increase NQueue in trcConfig.h";\r
+       case TRACE_CLASS_TIMER:\r
+               return "Not enough TIMER handles - increase NTimer in trcConfig.h";\r
+       case TRACE_CLASS_EVENTGROUP:\r
+               return "Not enough EVENTGROUP handles - increase NEventGroup in trcConfig.h";           \r
        default:\r
                return "pszTraceGetErrorHandles: Invalid objectclass!";\r
        }\r
@@ -182,8 +204,14 @@ uint8_t uiTraceIsObjectExcluded(traceObjectClass objectclass, objectHandleType h
                return TRACE_GET_MUTEX_FLAG_ISEXCLUDED(handle);\r
        case TRACE_CLASS_QUEUE:\r
                return TRACE_GET_QUEUE_FLAG_ISEXCLUDED(handle);\r
+       case TRACE_CLASS_TIMER:\r
+               return TRACE_GET_TIMER_FLAG_ISEXCLUDED(handle);         \r
+       case TRACE_CLASS_EVENTGROUP:\r
+               return TRACE_GET_EVENTGROUP_FLAG_ISEXCLUDED(handle);                            \r
        }\r
        \r
+       vTraceError("Invalid object class ID in uiTraceIsObjectExcluded!");\r
+       \r
        /* Must never reach */\r
        return 1;\r
 }\r