]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS-Plus/Source/FreeRTOS-Plus-Trace/Include/trcKernelPort.h
Update FreeRTOS+Trace recorder library to v3.0.2
[freertos] / FreeRTOS-Plus / Source / FreeRTOS-Plus-Trace / Include / trcKernelPort.h
index 904258606e731f25283cc07cac391c86ce8ff3d9..c5d25d9216589d054ef556c66f72b29e2458d41b 100644 (file)
@@ -1,8 +1,8 @@
 /*******************************************************************************\r
- * Tracealyzer v2.7.7 Recorder Library\r
+ * Tracealyzer v3.0.2 Recorder Library\r
  * Percepio AB, www.percepio.com\r
  *\r
- * trcKernelPortFreeRTOS.h\r
+ * trcKernelPort.h\r
  *\r
  * Kernel-specific functionality for FreeRTOS, used by the recorder library.\r
  *\r
@@ -33,7 +33,7 @@
  *\r
  * Tabs are used for indent in this file (1 tab = 4 spaces)\r
  *\r
- * Copyright Percepio AB, 2012-2015.\r
+ * Copyright Percepio AB, 2014.\r
  * www.percepio.com\r
  ******************************************************************************/\r
 \r
@@ -56,16 +56,21 @@ extern int uiInEventGroupSetBitsFromISR;
 #define TRACE_CPU_CLOCK_HZ configCPU_CLOCK_HZ /* Defined in "FreeRTOSConfig.h" */\r
 \r
 #if (SELECTED_PORT == PORT_ARM_CortexM)\r
-               \r
-    /* If you get warnings regarding __get_PRIMASK and __set_PRIMASK, make sure that ARM's CMSIS API is included \r
-       by the recorder using your chip vendor header file (e.g., "board.h", "stm32f4xx.h", "lpc17xx.h") */\r
        \r
-       #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status; \r
+       /* Uses CMSIS API */\r
+\r
+       #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status;\r
        #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = __get_PRIMASK(); __set_PRIMASK(1);}\r
        #define TRACE_EXIT_CRITICAL_SECTION() {__set_PRIMASK(__irq_status);}\r
 \r
 #endif\r
 \r
+#if (SELECTED_PORT == PORT_ARM_CORTEX_M0)\r
+       #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status;\r
+       #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = portSET_INTERRUPT_MASK_FROM_ISR();}\r
+       #define TRACE_EXIT_CRITICAL_SECTION() {portCLEAR_INTERRUPT_MASK_FROM_ISR(__irq_status);}\r
+#endif\r
+\r
 #if ((SELECTED_PORT == PORT_ARM_CORTEX_A9) || (SELECTED_PORT == PORT_Renesas_RX600) || (SELECTED_PORT == PORT_MICROCHIP_PIC32MX) || (SELECTED_PORT == PORT_MICROCHIP_PIC32MZ))\r
        #define TRACE_SR_ALLOC_CRITICAL_SECTION() int __irq_status;\r
        #define TRACE_ENTER_CRITICAL_SECTION() {__irq_status = portSET_INTERRUPT_MASK_FROM_ISR();}\r
@@ -471,7 +476,6 @@ void* prvTraceGetCurrentTaskHandle(void);
 #define TRACE_GET_CLASS_TRACE_CLASS(CLASS, kernelClass) TraceObjectClassTable[kernelClass]\r
 #define TRACE_GET_OBJECT_TRACE_CLASS(CLASS, pxObject) TRACE_GET_CLASS_TRACE_CLASS(CLASS, prvTraceGetObjectType(pxObject))\r
 \r
-/* Note: Timer tracing only supported on FreeRTOS v8 or later, so "Timer_t" is safe to use! */\r
 #define TRACE_GET_TIMER_NUMBER(tmr) ( ( objectHandleType ) ((Timer_t*)tmr)->uxTimerNumber )\r
 #define TRACE_SET_TIMER_NUMBER(tmr) ((Timer_t*)tmr)->uxTimerNumber = xTraceGetObjectHandle(TRACE_CLASS_TIMER);\r
 #define TRACE_GET_TIMER_NAME(pxTimer) pxTimer->pcTimerName\r
@@ -553,6 +557,12 @@ void* prvTraceGetCurrentTaskHandle(void);
 #define traceTASK_SUSPEND( pxTaskToSuspend ) \\r
        trcKERNEL_HOOKS_TASK_SUSPEND(TASK_SUSPEND, pxTaskToSuspend);\r
 \r
+/* Called from special case with timer only */\r
+#undef traceTASK_DELAY_SUSPEND\r
+#define traceTASK_DELAY_SUSPEND( pxTaskToSuspend ) \\r
+       trcKERNEL_HOOKS_TASK_SUSPEND(TASK_SUSPEND, pxTaskToSuspend); \\r
+       trcKERNEL_HOOKS_SET_TASK_INSTANCE_FINISHED();\r
+\r
 /* Called on vTaskDelay - note the use of FreeRTOS variable xTicksToDelay */\r
 #undef traceTASK_DELAY\r
 #define traceTASK_DELAY() \\r
@@ -1064,11 +1074,3 @@ vTraceSetObjectName(TRACE_CLASS_EVENTGROUP, (objectHandleType)uxEventGroupGetNum
 #endif\r
 \r
 #endif /* TRCKERNELPORTFREERTOS_H_ */\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r