/*******************************************************************************\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
*\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
#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
#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
#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
#endif\r
\r
#endif /* TRCKERNELPORTFREERTOS_H_ */\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r