]> git.sur5r.net Git - freertos/commitdiff
Multiple tidy up, documentation corrections and typo corrections highlighted by Tamas...
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 28 Nov 2013 10:48:33 +0000 (10:48 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 28 Nov 2013 10:48:33 +0000 (10:48 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2118 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

107 files changed:
FreeRTOS/Source/croutine.c
FreeRTOS/Source/include/FreeRTOS.h
FreeRTOS/Source/include/list.h
FreeRTOS/Source/include/projdefs.h
FreeRTOS/Source/include/queue.h
FreeRTOS/Source/include/semphr.h
FreeRTOS/Source/include/task.h
FreeRTOS/Source/include/timers.h
FreeRTOS/Source/list.c
FreeRTOS/Source/portable/BCC/16BitDOS/Flsh186/prtmacro.h
FreeRTOS/Source/portable/BCC/16BitDOS/PC/prtmacro.h
FreeRTOS/Source/portable/CCS/ARM_Cortex-R4/port.c
FreeRTOS/Source/portable/CCS/MSP430X/portmacro.h
FreeRTOS/Source/portable/CodeWarrior/ColdFire_V1/portmacro.h
FreeRTOS/Source/portable/CodeWarrior/ColdFire_V2/portmacro.h
FreeRTOS/Source/portable/CodeWarrior/HCS12/portmacro.h
FreeRTOS/Source/portable/GCC/ARM7_AT91FR40008/portmacro.h
FreeRTOS/Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h
FreeRTOS/Source/portable/GCC/ARM7_LPC2000/portmacro.h
FreeRTOS/Source/portable/GCC/ARM7_LPC23xx/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM0/port.c
FreeRTOS/Source/portable/GCC/ARM_CM0/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/port.c
FreeRTOS/Source/portable/GCC/ARM_CM3_MPU/portmacro.h
FreeRTOS/Source/portable/GCC/ARM_CM4F/portmacro.h
FreeRTOS/Source/portable/GCC/ATMega323/portmacro.h
FreeRTOS/Source/portable/GCC/AVR32_UC3/portmacro.h
FreeRTOS/Source/portable/GCC/CORTUS_APS3/portmacro.h
FreeRTOS/Source/portable/GCC/ColdFire_V2/portmacro.h
FreeRTOS/Source/portable/GCC/H8S2329/portmacro.h
FreeRTOS/Source/portable/GCC/HCS12/portmacro.h
FreeRTOS/Source/portable/GCC/MCF5235/portmacro.h
FreeRTOS/Source/portable/GCC/MSP430F449/portmacro.h
FreeRTOS/Source/portable/GCC/MicroBlaze/portmacro.h
FreeRTOS/Source/portable/GCC/MicroBlazeV8/port.c
FreeRTOS/Source/portable/GCC/MicroBlazeV8/portmacro.h
FreeRTOS/Source/portable/GCC/NiosII/portmacro.h
FreeRTOS/Source/portable/GCC/PPC405_Xilinx/portmacro.h
FreeRTOS/Source/portable/GCC/PPC440_Xilinx/portmacro.h
FreeRTOS/Source/portable/GCC/RX100/port.c
FreeRTOS/Source/portable/GCC/RX100/portmacro.h
FreeRTOS/Source/portable/GCC/RX600/port.c
FreeRTOS/Source/portable/GCC/RX600/portmacro.h
FreeRTOS/Source/portable/GCC/STR75x/portmacro.h
FreeRTOS/Source/portable/GCC/TriCore_1782/portmacro.h
FreeRTOS/Source/portable/IAR/78K0R/portmacro.h
FreeRTOS/Source/portable/IAR/ARM_CA9/port.c
FreeRTOS/Source/portable/IAR/ARM_CA9/portmacro.h
FreeRTOS/Source/portable/IAR/ARM_CM0/port.c
FreeRTOS/Source/portable/IAR/ARM_CM0/portmacro.h
FreeRTOS/Source/portable/IAR/ARM_CM3/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/port.c
FreeRTOS/Source/portable/IAR/ARM_CM4F/portmacro.h
FreeRTOS/Source/portable/IAR/ATMega323/portmacro.h
FreeRTOS/Source/portable/IAR/AVR32_UC3/portmacro.h
FreeRTOS/Source/portable/IAR/AtmelSAM7S64/portmacro.h
FreeRTOS/Source/portable/IAR/AtmelSAM9XE/portmacro.h
FreeRTOS/Source/portable/IAR/LPC2000/portmacro.h
FreeRTOS/Source/portable/IAR/MSP430/portmacro.h
FreeRTOS/Source/portable/IAR/MSP430X/portmacro.h
FreeRTOS/Source/portable/IAR/RL78/portmacro.h
FreeRTOS/Source/portable/IAR/RX100/port.c
FreeRTOS/Source/portable/IAR/RX100/portmacro.h
FreeRTOS/Source/portable/IAR/RX600/port.c
FreeRTOS/Source/portable/IAR/RX600/portmacro.h
FreeRTOS/Source/portable/IAR/STR71x/portmacro.h
FreeRTOS/Source/portable/IAR/STR75x/portmacro.h
FreeRTOS/Source/portable/IAR/STR91x/portmacro.h
FreeRTOS/Source/portable/IAR/V850ES/portmacro.h
FreeRTOS/Source/portable/MPLAB/PIC18F/portmacro.h
FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC/port.c
FreeRTOS/Source/portable/MPLAB/PIC24_dsPIC/portmacro.h
FreeRTOS/Source/portable/MPLAB/PIC32MX/port.c
FreeRTOS/Source/portable/MPLAB/PIC32MX/portmacro.h
FreeRTOS/Source/portable/MPLAB/PIC32MZ/port.c
FreeRTOS/Source/portable/MPLAB/PIC32MZ/portmacro.h
FreeRTOS/Source/portable/MSVC-MingW/portmacro.h
FreeRTOS/Source/portable/Paradigm/Tern_EE/large_untested/portmacro.h
FreeRTOS/Source/portable/Paradigm/Tern_EE/small/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM7_LPC21xx/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM_CA9/port.c
FreeRTOS/Source/portable/RVDS/ARM_CA9/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM_CM0/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM0/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM3/portmacro.h
FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c
FreeRTOS/Source/portable/RVDS/ARM_CM4F/portmacro.h
FreeRTOS/Source/portable/Renesas/RX100/port.c
FreeRTOS/Source/portable/Renesas/RX100/portmacro.h
FreeRTOS/Source/portable/Renesas/RX200/port.c
FreeRTOS/Source/portable/Renesas/RX200/portmacro.h
FreeRTOS/Source/portable/Renesas/RX600/port.c
FreeRTOS/Source/portable/Renesas/RX600/portmacro.h
FreeRTOS/Source/portable/Renesas/SH2A_FPU/portmacro.h
FreeRTOS/Source/portable/Rowley/MSP430F449/portmacro.h
FreeRTOS/Source/portable/SDCC/Cygnal/portmacro.h
FreeRTOS/Source/portable/Softune/MB91460/portmacro.h
FreeRTOS/Source/portable/Softune/MB96340/portmacro.h
FreeRTOS/Source/portable/Tasking/ARM_CM4F/port.c
FreeRTOS/Source/portable/Tasking/ARM_CM4F/portmacro.h
FreeRTOS/Source/portable/oWatcom/16BitDOS/Flsh186/portmacro.h
FreeRTOS/Source/portable/oWatcom/16BitDOS/PC/portmacro.h
FreeRTOS/Source/queue.c
FreeRTOS/Source/tasks.c
FreeRTOS/Source/timers.c

index 2b135f84eb8e4bfceb7f163319270940c2748598..04b229a4751b99bdc31a97f29072f34dcf3852b4 100644 (file)
@@ -174,7 +174,7 @@ corCRCB *pxCoRoutine;
                listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine );\r
 \r
                /* Event lists are always in priority order. */\r
-               listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority );\r
+               listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), ( ( portTickType ) configMAX_CO_ROUTINE_PRIORITIES - ( portTickType ) uxPriority ) );\r
 \r
                /* Now the co-routine has been initialised it can be added to the ready\r
                list at the correct priority. */\r
index f8e68f86f8852552514981b976f223c0e4b76eca..7832f5547dd2d97df3d2f4bf4c302a674dfd99e3 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -103,48 +103,66 @@ typedef portTickType xEventBitsType;
  * within FreeRTOSConfig.h.\r
  */\r
 \r
+#ifndef configMINIMAL_STACK_SIZE\r
+       #error Missing definition:  configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h.  configMINIMAL_STACK_SIZE defines the size (in words) of the stack allocated to the idle task.  Refer to the demo project provided for your port for a suitable value.\r
+#endif\r
+\r
+#ifndef configMAX_PRIORITIES\r
+       #error Missing definition:  configMAX_PRIORITIES must be defined in FreeRTOSConfig.h.  See the Configuration section of the FreeRTOS API documentation for details.\r
+#endif\r
+\r
 #ifndef configUSE_PREEMPTION\r
-       #error Missing definition:  configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  configUSE_PREEMPTION must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef configUSE_IDLE_HOOK\r
-       #error Missing definition:  configUSE_IDLE_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  configUSE_IDLE_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef configUSE_TICK_HOOK\r
-       #error Missing definition:  configUSE_TICK_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  configUSE_TICK_HOOK must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef configUSE_CO_ROUTINES\r
-       #error  Missing definition:  configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error  Missing definition:  configUSE_CO_ROUTINES must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_vTaskPrioritySet\r
-       #error Missing definition:  INCLUDE_vTaskPrioritySet should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_vTaskPrioritySet must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_uxTaskPriorityGet\r
-       #error Missing definition:  INCLUDE_uxTaskPriorityGet should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_uxTaskPriorityGet must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_vTaskDelete\r
-       #error Missing definition:  INCLUDE_vTaskDelete          should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_vTaskDelete          must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_vTaskSuspend\r
-       #error Missing definition:  INCLUDE_vTaskSuspend         should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_vTaskSuspend         must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_vTaskDelayUntil\r
-       #error Missing definition:  INCLUDE_vTaskDelayUntil should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_vTaskDelayUntil must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef INCLUDE_vTaskDelay\r
-       #error Missing definition:  INCLUDE_vTaskDelay should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  INCLUDE_vTaskDelay must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
 #endif\r
 \r
 #ifndef configUSE_16_BIT_TICKS\r
-       #error Missing definition:  configUSE_16_BIT_TICKS should be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+       #error Missing definition:  configUSE_16_BIT_TICKS must be defined in FreeRTOSConfig.h as either 1 or 0.  See the Configuration section of the FreeRTOS API documentation for details.\r
+#endif\r
+\r
+#if configUSE_CO_ROUTINES != 0\r
+       #if configMAX_CO_ROUTINE_PRIORITIES < 1\r
+               #error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1.\r
+       #endif\r
+#endif\r
+\r
+#if configMAX_PRIORITIES  < 1\r
+       #error configMAX_PRIORITIES  must be greater than or equal to 1.\r
 #endif\r
 \r
 #ifndef INCLUDE_xTaskGetIdleTaskHandle\r
@@ -627,6 +645,10 @@ typedef portTickType xEventBitsType;
        #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()\r
 #endif\r
 \r
+#ifndef configUSE_TRACE_FACILITY\r
+       #define configUSE_TRACE_FACILITY 0\r
+#endif\r
+\r
 /* For backward compatability. */\r
 #define eTaskStateGet eTaskGetState\r
 \r
index a4936889306df56e01da5607c4a4c14ec1b6d7b5..41f269e068989dc8c2a71e94c3c02648ea9e3e01 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
  * complete and obvious failure of the scheduler.  If this is ever experienced\r
  * then the volatile qualifier can be inserted in the relevant places within the\r
  * list structures by simply defining configLIST_VOLATILE to volatile in\r
- * FreeRTOSConfig.h (as per the example at the bottom of this comment block).  \r
- * If configLIST_VOLATILE is not defined then the preprocessor directives below \r
+ * FreeRTOSConfig.h (as per the example at the bottom of this comment block).\r
+ * If configLIST_VOLATILE is not defined then the preprocessor directives below\r
  * will simply #define configLIST_VOLATILE away completely.\r
  *\r
  * To use volatile list structure members then add the following line to\r
@@ -157,7 +157,7 @@ typedef struct xMINI_LIST_ITEM xMiniListItem;
 typedef struct xLIST\r
 {\r
        configLIST_VOLATILE unsigned portBASE_TYPE uxNumberOfItems;\r
-       xListItem * configLIST_VOLATILE pxIndex;                /*< Used to walk through the list.  Points to the last item returned by a call to pvListGetOwnerOfNextEntry (). */\r
+       xListItem * configLIST_VOLATILE pxIndex;                /*< Used to walk through the list.  Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */\r
        xMiniListItem xListEnd;                                                 /*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */\r
 } xList;\r
 \r
@@ -177,7 +177,7 @@ typedef struct xLIST
  * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER\r
  * \ingroup LinkedList\r
  */\r
-#define listGET_LIST_ITEM_OWNER( pxListItem )          ( pxListItem )->pvOwner\r
+#define listGET_LIST_ITEM_OWNER( pxListItem )          ( ( pxListItem )->pvOwner )\r
 \r
 /*\r
  * Access macro to set the value of the list item.  In most cases the value is\r
@@ -190,7 +190,7 @@ typedef struct xLIST
 \r
 /*\r
  * Access macro to retrieve the value of the list item.  The value can\r
- * represent anything - for example the priority of a task, or the time at\r
+ * represent anything - for example the priority of a task, or the time at\r
  * which a task should be unblocked.\r
  *\r
  * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE\r
@@ -199,7 +199,7 @@ typedef struct xLIST
 #define listGET_LIST_ITEM_VALUE( pxListItem )                          ( ( pxListItem )->xItemValue )\r
 \r
 /*\r
- * Access macro the retrieve the value of the list item at the head of a given\r
+ * Access macro to retrieve the value of the list item at the head of a given\r
  * list.\r
  *\r
  * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE\r
@@ -250,7 +250,7 @@ typedef struct xLIST
  *\r
  * The list member pxIndex is used to walk through a list.  Calling\r
  * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list\r
- * and returns that entries pxOwner parameter.  Using multiple calls to this\r
+ * and returns that entry's pxOwner parameter.  Using multiple calls to this\r
  * function it is therefore possible to move through every item contained in\r
  * a list.\r
  *\r
@@ -259,6 +259,7 @@ typedef struct xLIST
  * The pxOwner parameter effectively creates a two way link between the list\r
  * item and its owner.\r
  *\r
+ * @param pxTCB pxTCB is set to the address of the owner of the next list item.\r
  * @param pxList The list from which the next item owner is to be returned.\r
  *\r
  * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY\r
@@ -303,8 +304,7 @@ xList * const pxConstList = ( pxList );                                                                                                             \
  *\r
  * @param pxList The list we want to know if the list item is within.\r
  * @param pxListItem The list item we want to know if is in the list.\r
- * @return pdTRUE is the list item is in the list, otherwise pdFALSE.\r
- * pointer against\r
+ * @return pdTRUE if the list item is in the list, otherwise pdFALSE.\r
  */\r
 #define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( portBASE_TYPE ) ( ( pxListItem )->pvContainer == ( void * ) ( pxList ) ) )\r
 \r
@@ -352,7 +352,7 @@ void vListInitialiseItem( xListItem * const pxItem );
  *\r
  * @param pxList The list into which the item is to be inserted.\r
  *\r
- * @param pxNewListItem The item to that is to be placed in the list.\r
+ * @param pxNewListItem The item that is to be placed in the list.\r
  *\r
  * \page vListInsert vListInsert\r
  * \ingroup LinkedList\r
index 74aa84f0dbfde6caeffafd9a745fd0ed4b295abe..766424dbf99aebe0cf165b7d4c995b0c26267013 100644 (file)
@@ -83,7 +83,6 @@ typedef void (*pdAPPLICATION_CALLBACK_CODE)( void *, unsigned long );
 \r
 /* Error definitions. */\r
 #define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY  ( -1 )\r
-#define errNO_TASK_TO_RUN                                              ( -2 )\r
 #define errQUEUE_BLOCKED                                               ( -4 )\r
 #define errQUEUE_YIELD                                                 ( -5 )\r
 \r
index 6873611ca04816047d19d0f2f187464f948978b4..c67d315ddc1b3b36b7b95a812e53c7ec13451621 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -1137,7 +1137,7 @@ void vQueueDelete( xQueueHandle xQueue ) PRIVILEGED_FUNCTION;
    <pre>\r
 \r
  xQueueHandle xQueue;\r
\r
+\r
  void vFunction( void *pvParameters )\r
  {\r
        // Create a queue to hold one unsigned long value.  It is strongly\r
@@ -1166,7 +1166,7 @@ unsigned long ulVarToSend, ulValReceived;
        // Reading from the queue will now return 100.\r
 \r
        // ...\r
-       \r
+\r
        if( xHigherPrioritytaskWoken == pdTRUE )\r
        {\r
                // Writing to the queue caused a task to unblock and the unblocked task\r
@@ -1509,7 +1509,9 @@ portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle pxMutex ) PRIVILEGED_FUNCTI
  * handles can also be passed in here.\r
  *\r
  * @param pcName The name to be associated with the handle.  This is the\r
- * name that the kernel aware debugger will display.\r
+ * name that the kernel aware debugger will display.  The queue registry only\r
+ * stores a pointer to the string - so the string must be persistent (global or\r
+ * preferably in ROM/Flash), not on the stack.\r
  */\r
 #if configQUEUE_REGISTRY_SIZE > 0\r
        void vQueueAddToRegistry( xQueueHandle xQueue, signed char *pcName ) PRIVILEGED_FUNCTION;\r
index cfa34c453c97533e385024915541d2ac136350dc..9fd8caad279f578de43642ef1e7297805781c97f 100644 (file)
@@ -828,7 +828,7 @@ typedef xQueueHandle xSemaphoreHandle;
  * If xMutex is not a mutex type semaphore, or the mutex is available (not held\r
  * by a task), return NULL.\r
  *\r
- * Note: This Is is a good way of determining if the calling task is the mutex\r
+ * Note: This is a good way of determining if the calling task is the mutex\r
  * holder, but not a good way of determining the identity of the mutex holder as\r
  * the holder may change between the function exiting and the returned value\r
  * being tested.\r
index d71d5145e00b67267a624235dcfaa4293956b7e8..956556e67bfea3405d468a4d5678c1c5a85b8e21 100644 (file)
@@ -127,7 +127,7 @@ typedef struct xMEMORY_REGION
 /*\r
  * Parameters required to create an MPU protected task.\r
  */\r
-typedef struct xTASK_PARAMTERS\r
+typedef struct xTASK_PARAMETERS\r
 {\r
        pdTASK_CODE pvTaskCode;\r
        const signed char * const pcName;\r
@@ -161,7 +161,7 @@ typedef enum
 } eSleepModeStatus;\r
 \r
 \r
-/*\r
+/**\r
  * Defines the priority used by the idle task.  This must not be modified.\r
  *\r
  * \ingroup TaskUtils\r
@@ -243,7 +243,7 @@ is used in assert() statements. */
  *<pre>\r
  portBASE_TYPE xTaskCreate(\r
                                                          pdTASK_CODE pvTaskCode,\r
-                                                         const char * const pcName,\r
+                                                         const signed char * const pcName,\r
                                                          unsigned short usStackDepth,\r
                                                          void *pvParameters,\r
                                                          unsigned portBASE_TYPE uxPriority,\r
@@ -261,7 +261,7 @@ is used in assert() statements. */
  * must be implemented to never return (i.e. continuous loop).\r
  *\r
  * @param pcName A descriptive name for the task.  This is mainly used to\r
- * facilitate debugging.  Max length defined by tskMAX_TASK_NAME_LEN - default\r
+ * facilitate debugging.  Max length defined by configMAX_TASK_NAME_LEN - default\r
  * is 16.\r
  *\r
  * @param usStackDepth The size of the task stack specified as the number of\r
@@ -282,7 +282,7 @@ is used in assert() statements. */
  * can be referenced.\r
  *\r
  * @return pdPASS if the task was successfully created and added to a ready\r
- * list, otherwise an error code defined in the file errors. h\r
+ * list, otherwise an error code defined in the file projdefs.h\r
  *\r
  * Example usage:\r
    <pre>\r
@@ -299,16 +299,20 @@ is used in assert() statements. */
  void vOtherFunction( void )\r
  {\r
  static unsigned char ucParameterToPass;\r
- xTaskHandle xHandle;\r
+ xTaskHandle xHandle = NULL;\r
 \r
         // Create the task, storing the handle.  Note that the passed parameter ucParameterToPass\r
         // must exist for the lifetime of the task, so in this case is declared static.  If it was just an\r
         // an automatic stack variable it might no longer exist, or at least have been corrupted, by the time\r
         // the new task attempts to access it.\r
         xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );\r
+     configASSERT( xHandle );\r
 \r
         // Use the handle to delete the task.\r
-        vTaskDelete( xHandle );\r
+     if( xHandle != NULL )\r
+     {\r
+            vTaskDelete( xHandle );\r
+     }\r
  }\r
    </pre>\r
  * \defgroup xTaskCreate xTaskCreate\r
@@ -337,7 +341,7 @@ is used in assert() statements. */
  * can be referenced.\r
  *\r
  * @return pdPASS if the task was successfully created and added to a ready\r
- * list, otherwise an error code defined in the file errors. h\r
+ * list, otherwise an error code defined in the file projdefs.h\r
  *\r
  * Example usage:\r
    <pre>\r
@@ -376,7 +380,7 @@ xTaskHandle xHandle;
        vTaskStartScheduler();\r
 \r
        // Will only get here if there was insufficient memory to create the idle\r
-       // task.\r
+       // and/or timer task.\r
        for( ;; );\r
 }\r
    </pre>\r
@@ -440,7 +444,7 @@ void vTaskAllocateMPURegions( xTaskHandle xTask, const xMemoryRegion * const pxR
  * INCLUDE_vTaskDelete must be defined as 1 for this function to be available.\r
  * See the configuration section for more information.\r
  *\r
- * Remove a task from the RTOS real time kernels management.  The task being\r
+ * Remove a task from the RTOS real time kernel's management.  The task being\r
  * deleted will be removed from all ready, blocked, suspended and event lists.\r
  *\r
  * NOTE:  The idle task is responsible for freeing the kernel allocated\r
@@ -480,7 +484,7 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
 \r
 /**\r
  * task. h\r
- * <pre>void vTaskDelay( portTickType xTicksToDelay );</pre>\r
+ * <pre>void vTaskDelay( const portTickType xTicksToDelay );</pre>\r
  *\r
  * Delay a task for a given number of ticks.  The actual time that the\r
  * task remains blocked depends on the tick rate.  The constant\r
@@ -495,7 +499,7 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
  * the time at which vTaskDelay() is called.  For example, specifying a block\r
  * period of 100 ticks will cause the task to unblock 100 ticks after\r
  * vTaskDelay() is called.  vTaskDelay() does not therefore provide a good method\r
- * of controlling the frequency of a cyclical task as the path taken through the\r
+ * of controlling the frequency of a periodic task as the path taken through the\r
  * code, as well as other task and interrupt activity, will effect the frequency\r
  * at which vTaskDelay() gets called and therefore the time at which the task\r
  * next executes.  See vTaskDelayUntil() for an alternative API function designed\r
@@ -508,8 +512,6 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
  *\r
  * Example usage:\r
 \r
- void vTaskFunction( void * pvParameters )\r
- {\r
  void vTaskFunction( void * pvParameters )\r
  {\r
  // Block for 500ms.\r
@@ -526,16 +528,16 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
  * \defgroup vTaskDelay vTaskDelay\r
  * \ingroup TaskCtrl\r
  */\r
-void vTaskDelay( portTickType xTicksToDelay ) PRIVILEGED_FUNCTION;\r
+void vTaskDelay( const portTickType xTicksToDelay ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
  * task. h\r
- * <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );</pre>\r
+ * <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, const portTickType xTimeIncrement );</pre>\r
  *\r
  * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.\r
  * See the configuration section for more information.\r
  *\r
- * Delay a task until a specified time.  This function can be used by cyclical\r
+ * Delay a task until a specified time.  This function can be used by periodic\r
  * tasks to ensure a constant execution frequency.\r
  *\r
  * This function differs from vTaskDelay () in one important aspect:  vTaskDelay () will\r
@@ -585,13 +587,13 @@ void vTaskDelay( portTickType xTicksToDelay ) PRIVILEGED_FUNCTION;
  * \defgroup vTaskDelayUntil vTaskDelayUntil\r
  * \ingroup TaskCtrl\r
  */\r
-void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement ) PRIVILEGED_FUNCTION;\r
+void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, const portTickType xTimeIncrement ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
  * task. h\r
  * <pre>unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle xTask );</pre>\r
  *\r
- * INCLUDE_xTaskPriorityGet must be defined as 1 for this function to be available.\r
+ * INCLUDE_uxTaskPriorityGet must be defined as 1 for this function to be available.\r
  * See the configuration section for more information.\r
  *\r
  * Obtain the priority of any task.\r
@@ -754,7 +756,7 @@ void vTaskSuspend( xTaskHandle xTaskToSuspend ) PRIVILEGED_FUNCTION;
  *\r
  * Resumes a suspended task.\r
  *\r
- * A task that has been suspended by one of more calls to vTaskSuspend ()\r
+ * A task that has been suspended by one or more calls to vTaskSuspend ()\r
  * will be made available for running again by a single call to\r
  * vTaskResume ().\r
  *\r
@@ -786,7 +788,7 @@ void vTaskSuspend( xTaskHandle xTaskToSuspend ) PRIVILEGED_FUNCTION;
         vTaskResume( xHandle );\r
 \r
         // The created task will once again get microcontroller processing\r
-        // time in accordance with it priority within the system.\r
+        // time in accordance with its priority within the system.\r
  }\r
    </pre>\r
  * \defgroup vTaskResume vTaskResume\r
@@ -803,12 +805,21 @@ void vTaskResume( xTaskHandle xTaskToResume ) PRIVILEGED_FUNCTION;
  *\r
  * An implementation of vTaskResume() that can be called from within an ISR.\r
  *\r
- * A task that has been suspended by one of more calls to vTaskSuspend ()\r
+ * A task that has been suspended by one or more calls to vTaskSuspend ()\r
  * will be made available for running again by a single call to\r
  * xTaskResumeFromISR ().\r
  *\r
+ * xTaskResumeFromISR() should not be used to synchronise a task with an\r
+ * interrupt if there is a chance that the interrupt could arrive prior to the\r
+ * task being suspended - as this can lead to interrupts being missed. Use of a\r
+ * semaphore as a synchronisation mechanism would avoid this eventuality.\r
+ *\r
  * @param xTaskToResume Handle to the task being readied.\r
  *\r
+ * @return pdTRUE if resuming the task should result in a context switch,\r
+ * otherwise pdFALSE. This is used by the ISR to determine if a context switch\r
+ * may be required following the ISR.\r
+ *\r
  * \defgroup vTaskResumeFromISR vTaskResumeFromISR\r
  * \ingroup TaskCtrl\r
  */\r
@@ -823,12 +834,7 @@ portBASE_TYPE xTaskResumeFromISR( xTaskHandle xTaskToResume ) PRIVILEGED_FUNCTIO
  * <pre>void vTaskStartScheduler( void );</pre>\r
  *\r
  * Starts the real time kernel tick processing.  After calling the kernel\r
- * has control over which tasks are executed and when.  This function\r
- * does not return until an executing task calls vTaskEndScheduler ().\r
- *\r
- * At least one task should be created via a call to xTaskCreate ()\r
- * before calling vTaskStartScheduler ().  The idle task is created\r
- * automatically when the first application task is created.\r
+ * has control over which tasks are executed and when.\r
  *\r
  * See the demo application file main.c for an example of creating\r
  * tasks and starting the kernel.\r
@@ -856,6 +862,9 @@ void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;
  * task. h\r
  * <pre>void vTaskEndScheduler( void );</pre>\r
  *\r
+ * NOTE:  At the time of writing only the x86 real mode port, which runs on a PC\r
+ * in place of DOS, implements this function.\r
+ *\r
  * Stops the real time kernel tick.  All created tasks will be automatically\r
  * deleted and multitasking (either preemptive or cooperative) will\r
  * stop.  Execution then resumes from the point where vTaskStartScheduler ()\r
@@ -909,8 +918,8 @@ void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;
  * task. h\r
  * <pre>void vTaskSuspendAll( void );</pre>\r
  *\r
- * Suspends all real time kernel activity while keeping interrupts (including the\r
- * kernel tick) enabled.\r
+ * Suspends the scheduler without disabling interrupts.  Context switches will\r
+ * not occur while the scheduler is suspended.\r
  *\r
  * After calling vTaskSuspendAll () the calling task will continue to execute\r
  * without risk of being swapped out until a call to xTaskResumeAll () has been\r
@@ -960,9 +969,11 @@ void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION;
  * task. h\r
  * <pre>char xTaskResumeAll( void );</pre>\r
  *\r
- * Resumes real time kernel activity following a call to vTaskSuspendAll ().\r
- * After a call to vTaskSuspendAll () the kernel will take control of which\r
- * task is executing at any time.\r
+ * Resumes scheduler activity after it was suspended by a call to\r
+ * vTaskSuspendAll().\r
+ *\r
+ * xTaskResumeAll() only resumes the scheduler.  It does not unsuspend tasks\r
+ * that were previously suspended by a call to vTaskSuspend().\r
  *\r
  * @return If resuming the scheduler caused a context switch then pdTRUE is\r
  *               returned, otherwise pdFALSE is returned.\r
@@ -1017,7 +1028,7 @@ signed portBASE_TYPE xTaskResumeAll( void ) PRIVILEGED_FUNCTION;
  * is in any other state.\r
  *\r
  */\r
-signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ) PRIVILEGED_FUNCTION;\r
+signed portBASE_TYPE xTaskIsTaskSuspended( const xTaskHandle xTask ) PRIVILEGED_FUNCTION;\r
 \r
 /*-----------------------------------------------------------\r
  * TASK UTILITIES\r
@@ -1045,7 +1056,7 @@ portTickType xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
  * microcontroller being used or interrupt nesting is either not supported or\r
  * not being used.\r
  *\r
- * \defgroup xTaskGetTickCount xTaskGetTickCount\r
+ * \defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR\r
  * \ingroup TaskUtils\r
  */\r
 portTickType xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;\r
@@ -1069,7 +1080,7 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;
  * <PRE>signed char *pcTaskGetTaskName( xTaskHandle xTaskToQuery );</PRE>\r
  *\r
  * @return The text (human readable) name of the task referenced by the handle\r
- * xTaskToQueury.  A task can query its own name by either passing in its own\r
+ * xTaskToQuery.  A task can query its own name by either passing in its own\r
  * handle, or by setting xTaskToQuery to NULL.  INCLUDE_pcTaskGetTaskName must be\r
  * set to 1 in FreeRTOSConfig.h for pcTaskGetTaskName() to be available.\r
  *\r
@@ -1093,12 +1104,13 @@ signed char *pcTaskGetTaskName( xTaskHandle xTaskToQuery );
  * @param xTask Handle of the task associated with the stack to be checked.\r
  * Set xTask to NULL to check the stack of the calling task.\r
  *\r
- * @return The smallest amount of free stack space there has been (in bytes)\r
- * since the task referenced by xTask was created.\r
+ * @return The smallest amount of free stack space there has been (in words, so\r
+ * actual spaces on the stack rather than bytes) since the task referenced by\r
+ * xTask was created.\r
  */\r
 unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) PRIVILEGED_FUNCTION;\r
 \r
-/* When using trace macros it is sometimes necessary to include tasks.h before\r
+/* When using trace macros it is sometimes necessary to include task.h before\r
 FreeRTOS.h.  When this is done pdTASK_HOOK_CODE will not yet have been defined,\r
 so the following two prototypes will cause a compilation error.  This can be\r
 fixed by simply guarding against the inclusion of these two prototypes unless\r
@@ -1128,13 +1140,14 @@ constant. */
 \r
 /**\r
  * task.h\r
- * <pre>portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, pdTASK_HOOK_CODE pxHookFunction );</pre>\r
+ * <pre>portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter );</pre>\r
  *\r
  * Calls the hook function associated with xTask.  Passing xTask as NULL has\r
  * the effect of calling the Running tasks (the calling task) hook function.\r
  *\r
  * pvParameter is passed to the hook function for the task to interpret as it\r
- * wants.\r
+ * wants.  The return value is the value returned by the task hook function\r
+ * registered by the user.\r
  */\r
 portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter ) PRIVILEGED_FUNCTION;\r
 \r
@@ -1148,7 +1161,7 @@ portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter
 xTaskHandle xTaskGetIdleTaskHandle( void );\r
 \r
 /**\r
- * configUSE_TRACE_FACILITY must bet defined as 1 in FreeRTOSConfig.h for\r
+ * configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for\r
  * uxTaskGetSystemState() to be available.\r
  *\r
  * uxTaskGetSystemState() populates an xTaskStatusType structure for each task in\r
@@ -1197,11 +1210,11 @@ xTaskHandle xTaskGetIdleTaskHandle( void );
 \r
                // Take a snapshot of the number of tasks in case it changes while this\r
                // function is executing.\r
-               uxArraySize = uxCurrentNumberOfTasks();\r
+               uxArraySize = uxTaskGetNumberOfTasks();\r
 \r
                // Allocate a xTaskStatusType structure for each task.  An array could be\r
                // allocated statically at compile time.\r
-               pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( xTaskStatusType ) );\r
+               pxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( xTaskStatusType ) );\r
 \r
                if( pxTaskStatusArray != NULL )\r
                {\r
@@ -1284,7 +1297,7 @@ unsigned portBASE_TYPE uxTaskGetSystemState( xTaskStatusType *pxTaskStatusArray,
  * call to vTaskList().\r
  *\r
  * @param pcWriteBuffer A buffer into which the above mentioned details\r
- * will be written, in ascii form.  This buffer is assumed to be large\r
+ * will be written, in ASCII form.  This buffer is assumed to be large\r
  * enough to contain the generated report.  Approximately 40 bytes per\r
  * task should be sufficient.\r
  *\r
@@ -1300,7 +1313,7 @@ void vTaskList( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;
  * configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS\r
  * must both be defined as 1 for this function to be available.  The application\r
  * must also then provide definitions for\r
- * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE\r
+ * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE()\r
  * to configure a peripheral timer/counter and return the timers current count\r
  * value respectively.  The counter should be at least 10 times the frequency of\r
  * the tick count.\r
@@ -1338,7 +1351,7 @@ void vTaskList( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;
  * vTaskGetRunTimeStats().\r
  *\r
  * @param pcWriteBuffer A buffer into which the execution times will be\r
- * written, in ascii form.  This buffer is assumed to be large enough to\r
+ * written, in ASCII form.  This buffer is assumed to be large enough to\r
  * contain the generated report.  Approximately 40 bytes per task should\r
  * be sufficient.\r
  *\r
@@ -1412,8 +1425,6 @@ void vTaskPlaceOnUnorderedEventList( xList * pxEventList, portTickType xItemValu
  * The difference being that this function does not permit tasks to block\r
  * indefinitely, whereas vTaskPlaceOnEventList() does.\r
  *\r
- * @return pdTRUE if the task being removed has a higher priority than the task\r
- * making the call, otherwise pdFALSE.\r
  */\r
 void vTaskPlaceOnEventListRestricted( xList * const pxEventList, portTickType xTicksToWait ) PRIVILEGED_FUNCTION;\r
 \r
@@ -1512,21 +1523,23 @@ signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed ch
 unsigned portBASE_TYPE uxTaskGetTaskNumber( xTaskHandle xTask ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
- * Set the uxTCBNumber of the task referenced by the xTask parameter to\r
- * ucHandle.\r
+ * Set the uxTaskNumber of the task referenced by the xTask parameter to\r
+ * uxHandle.\r
  */\r
 void vTaskSetTaskNumber( xTaskHandle xTask, unsigned portBASE_TYPE uxHandle ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
+ * Only available when configUSE_TICKLESS_IDLE is set to 1.\r
  * If tickless mode is being used, or a low power mode is implemented, then\r
  * the tick interrupt will not execute during idle periods.  When this is the\r
  * case, the tick count value maintained by the scheduler needs to be kept up\r
- * to date with the actual execution time by being skipped forward by the by\r
- * a time equal to the idle period.\r
+ * to date with the actual execution time by being skipped forward by a time\r
+ * equal to the idle period.\r
  */\r
 void vTaskStepTick( portTickType xTicksToJump ) PRIVILEGED_FUNCTION;\r
 \r
 /*\r
+ * Only avilable when configUSE_TICKLESS_IDLE is set to 1.\r
  * Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port\r
  * specific sleep function to determine if it is ok to proceed with the sleep,\r
  * and if it is ok to proceed, if it is ok to sleep indefinitely.\r
index f41ac583b920c9e7e0e66c5293dd3e1b8a6cdb28..4b6775cdac7a96ae8118b734aa38795db340fba3 100644 (file)
@@ -80,6 +80,10 @@ happens to also be including task.h. */
 extern "C" {\r
 #endif\r
 \r
+/*-----------------------------------------------------------\r
+ * MACROS AND DEFINITIONS\r
+ *----------------------------------------------------------*/\r
+\r
 /* IDs for commands that can be sent/received on the timer queue.  These are to\r
 be used solely through the macros that make up the public software timer API,\r
 as defined below. */\r
@@ -89,11 +93,7 @@ as defined below. */
 #define tmrCOMMAND_CHANGE_PERIOD                       ( ( portBASE_TYPE ) 2 )\r
 #define tmrCOMMAND_DELETE                                      ( ( portBASE_TYPE ) 3 )\r
 \r
-/*-----------------------------------------------------------\r
- * MACROS AND DEFINITIONS\r
- *----------------------------------------------------------*/\r
-\r
- /**\r
+/**\r
  * Type by which software timers are referenced.  For example, a call to\r
  * xTimerCreate() returns an xTimerHandle variable that can then be used to\r
  * reference the subject timer in calls to other software timer API functions\r
@@ -105,7 +105,7 @@ typedef void * xTimerHandle;
 typedef void (*tmrTIMER_CALLBACK)( xTimerHandle xTimer );\r
 \r
 /**\r
- * xTimerHandle xTimerCreate(  const signed char *pcTimerName,\r
+ * xTimerHandle xTimerCreate(  const signed char * const pcTimerName,\r
  *                                                             portTickType xTimerPeriodInTicks,\r
  *                                                             unsigned portBASE_TYPE uxAutoReload,\r
  *                                                             void * pvTimerID,\r
@@ -145,10 +145,10 @@ typedef void (*tmrTIMER_CALLBACK)( xTimerHandle xTimer );
  * Callback functions must have the prototype defined by tmrTIMER_CALLBACK,\r
  * which is    "void vCallbackFunction( xTimerHandle xTimer );".\r
  *\r
- * @return If the timer is successfully create then a handle to the newly\r
+ * @return If the timer is successfully created then a handle to the newly\r
  * created timer is returned.  If the timer cannot be created (because either\r
  * there is insufficient FreeRTOS heap remaining to allocate the timer\r
- * structures, or the timer period was set to 0) then 0 is returned.\r
+ * structures, or the timer period was set to 0) then NULL is returned.\r
  *\r
  * Example usage:\r
  * @verbatim\r
@@ -263,7 +263,7 @@ void *pvTimerGetTimerID( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;
  *\r
  * A timer will be dormant if:\r
  *     1) It has been created but not started, or\r
- *     2) It is an expired on-shot timer that has not been restarted.\r
+ *     2) It is an expired one-shot timer that has not been restarted.\r
  *\r
  * Timers are created in the dormant state.  The xTimerStart(), xTimerReset(),\r
  * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and\r
@@ -294,6 +294,8 @@ void *pvTimerGetTimerID( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;
 portBASE_TYPE xTimerIsTimerActive( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;\r
 \r
 /**\r
+ * xTaskHandle xTimerGetTimerDaemonTaskHandle( void );\r
+ *\r
  * xTimerGetTimerDaemonTaskHandle() is only available if\r
  * INCLUDE_xTimerGetTimerDaemonTaskHandle is set to 1 in FreeRTOSConfig.h.\r
  *\r
@@ -307,7 +309,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *\r
  * Timer functionality is provided by a timer service/daemon task.  Many of the\r
  * public FreeRTOS timer API functions send commands to the timer service task\r
- * though a queue called the timer command queue.  The timer command queue is\r
+ * through a queue called the timer command queue.  The timer command queue is\r
  * private to the kernel itself and is not directly accessible to application\r
  * code.  The length of the timer command queue is set by the\r
  * configTIMER_QUEUE_LENGTH configuration constant.\r
@@ -359,7 +361,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *\r
  * Timer functionality is provided by a timer service/daemon task.  Many of the\r
  * public FreeRTOS timer API functions send commands to the timer service task\r
- * though a queue called the timer command queue.  The timer command queue is\r
+ * through a queue called the timer command queue.  The timer command queue is\r
  * private to the kernel itself and is not directly accessible to application\r
  * code.  The length of the timer command queue is set by the\r
  * configTIMER_QUEUE_LENGTH configuration constant.\r
@@ -403,7 +405,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *\r
  * Timer functionality is provided by a timer service/daemon task.  Many of the\r
  * public FreeRTOS timer API functions send commands to the timer service task\r
- * though a queue called the timer command queue.  The timer command queue is\r
+ * through a queue called the timer command queue.  The timer command queue is\r
  * private to the kernel itself and is not directly accessible to application\r
  * code.  The length of the timer command queue is set by the\r
  * configTIMER_QUEUE_LENGTH configuration constant.\r
@@ -481,7 +483,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *\r
  * Timer functionality is provided by a timer service/daemon task.  Many of the\r
  * public FreeRTOS timer API functions send commands to the timer service task\r
- * though a queue called the timer command queue.  The timer command queue is\r
+ * through a queue called the timer command queue.  The timer command queue is\r
  * private to the kernel itself and is not directly accessible to application\r
  * code.  The length of the timer command queue is set by the\r
  * configTIMER_QUEUE_LENGTH configuration constant.\r
@@ -519,7 +521,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *\r
  * Timer functionality is provided by a timer service/daemon task.  Many of the\r
  * public FreeRTOS timer API functions send commands to the timer service task\r
- * though a queue called the timer command queue.  The timer command queue is\r
+ * through a queue called the timer command queue.  The timer command queue is\r
  * private to the kernel itself and is not directly accessible to application\r
  * code.  The length of the timer command queue is set by the\r
  * configTIMER_QUEUE_LENGTH configuration constant.\r
@@ -716,7 +718,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *     if( xHigherPriorityTaskWoken != pdFALSE )\r
  *     {\r
  *         // Call the interrupt safe yield function here (actual function\r
- *         // depends on the FreeRTOS port being used.\r
+ *         // depends on the FreeRTOS port being used).\r
  *     }\r
  * }\r
  * @endverbatim\r
@@ -779,7 +781,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *     if( xHigherPriorityTaskWoken != pdFALSE )\r
  *     {\r
  *         // Call the interrupt safe yield function here (actual function\r
- *         // depends on the FreeRTOS port being used.\r
+ *         // depends on the FreeRTOS port being used).\r
  *     }\r
  * }\r
  * @endverbatim\r
@@ -852,7 +854,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *     if( xHigherPriorityTaskWoken != pdFALSE )\r
  *     {\r
  *         // Call the interrupt safe yield function here (actual function\r
- *         // depends on the FreeRTOS port being used.\r
+ *         // depends on the FreeRTOS port being used).\r
  *     }\r
  * }\r
  * @endverbatim\r
@@ -938,7 +940,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
  *     if( xHigherPriorityTaskWoken != pdFALSE )\r
  *     {\r
  *         // Call the interrupt safe yield function here (actual function\r
- *         // depends on the FreeRTOS port being used.\r
+ *         // depends on the FreeRTOS port being used).\r
  *     }\r
  * }\r
  * @endverbatim\r
index 1421bc6897e36ff13a86036a2dc28d317136b029..a3e6755d991f96e50e7c8273888ab0684899778a 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -101,13 +101,11 @@ void vListInitialiseItem( xListItem * const pxItem )
 \r
 void vListInsertEnd( xList * const pxList, xListItem * const pxNewListItem )\r
 {\r
-xListItem * pxIndex;\r
+xListItem * const pxIndex = pxList->pxIndex;\r
 \r
        /* Insert a new list item into pxList, but rather than sort the list,\r
        makes the new list item the last item to be removed by a call to\r
-       pvListGetOwnerOfNextEntry. */\r
-       pxIndex = pxList->pxIndex;\r
-\r
+       listGET_OWNER_OF_NEXT_ENTRY(). */\r
        pxNewListItem->pxNext = pxIndex;\r
        pxNewListItem->pxPrevious = pxIndex->pxPrevious;\r
        pxIndex->pxPrevious->pxNext = pxNewListItem;\r
@@ -123,14 +121,13 @@ xListItem * pxIndex;
 void vListInsert( xList * const pxList, xListItem * const pxNewListItem )\r
 {\r
 xListItem *pxIterator;\r
-portTickType xValueOfInsertion;\r
+const portTickType xValueOfInsertion = pxNewListItem->xItemValue;\r
 \r
-       /* Insert the new list item into the list, sorted in ulListItem order. */\r
-       xValueOfInsertion = pxNewListItem->xItemValue;\r
+       /* Insert the new list item into the list, sorted in xItemValue order.\r
 \r
-       /* If the list already contains a list item with the same item value then\r
+       If the list already contains a list item with the same item value then\r
        the new list item should be placed after it.  This ensures that TCB's which\r
-       are stored in ready lists (all of which have the same ulListItem value)\r
+       are stored in ready lists (all of which have the same xItemValue value)\r
        get an equal share of the CPU.  However, if the xItemValue is the same as\r
        the back marker the iteration loop below will not end.  This means we need\r
        to guard against this by checking the value first and modifying the\r
@@ -180,15 +177,13 @@ portTickType xValueOfInsertion;
 \r
 unsigned portBASE_TYPE uxListRemove( xListItem * const pxItemToRemove )\r
 {\r
-xList * pxList;\r
+/* The list item knows which list it is in.  Obtain the list from the list\r
+item. */\r
+xList * const pxList = ( xList * ) pxItemToRemove->pvContainer;\r
 \r
        pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;\r
        pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;\r
 \r
-       /* The list item knows which list it is in.  Obtain the list from the list\r
-       item. */\r
-       pxList = ( xList * ) pxItemToRemove->pvContainer;\r
-\r
        /* Make sure the index is left pointing to a valid item. */\r
        if( pxList->pxIndex == pxItemToRemove )\r
        {\r
index e9865406439bc38122fe1451761e87e5976d4183..04ca47ee8703aeb7258df01e5d35a189838d8706 100644 (file)
@@ -90,7 +90,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 9dc720c1ed79e369ab10a25f6b9ae32adc9ea278..21ff0000d71462cfbc4b20c39126aa1e77afad83 100644 (file)
@@ -90,7 +90,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index afb646fa2ef512b584d62b8baee9271bb04dbf71..7fd41deed322caf14ff6d348c4e44b34f59ee6aa 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -258,8 +258,9 @@ portBASE_TYPE xPortStartScheduler(void)
  */\r
 void vPortEndScheduler(void)\r
 {\r
-       /* It is unlikely that the port will require this function as there\r
-       is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( ulCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 589549bce94b7d1ae0fbf7722a9aad4eafd35430..4a9785bef839cd3cb9c1c436e1fec8c56552faf0 100644 (file)
@@ -99,7 +99,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /*-----------------------------------------------------------*/        \r
index a8b6377cc3e0ae5fc38cc423335ffb6a9a012e20..65b3dba557732fd7c3d8012699e8442e85d3f33c 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index af146cedeb286ab525473771339849f8e87476c7..dea63b3db18968db4cf4840a77338d07a83bb6e1 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 6eaf3ae765aaaa8595764eb59209719bf827a96a..c159b5e00999ea79177b345600f783953fb9774b 100644 (file)
@@ -91,7 +91,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 0e8e666fe61eca5c46b8c4c71d7ec17d75607dd6..6fd0f401b1be6d9ba0b336e9479f6d61f583ae3e 100644 (file)
@@ -117,7 +117,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 757d62235854cba0f6284043072ddff0c18bf33e..4bc8b5c868438d089b75becf47ec5258a6621bef 100644 (file)
@@ -117,7 +117,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index d702d735cd06c9df1dd69303bea2d67e1ae473b7..62a2b9335722a71bbe7a248eb865bf37e3d5f84b 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 580e47cb796320438f581a39188f942648eb02ea..80f0bb27db9466d8cfc21cfd8a1fef0255a6c7da 100644 (file)
@@ -117,7 +117,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index f34e9fd32fbee45b96bdeabf769d916543b2aea4..b469a9ebf8c4912abab56dae0da23603edcc0396 100644 (file)
@@ -185,7 +185,7 @@ void vPortStartFirstTask( void )
        "       pop {pc}                                        \n" /* Finally, pop the PC to jump to the user defined task code. */\r
        "                                                               \n"\r
        "       .align 2                                        \n"\r
-       "pxCurrentTCBConst2: .word pxCurrentTCB   "                                     \r
+       "pxCurrentTCBConst2: .word pxCurrentTCB   "\r
                                  );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -208,7 +208,7 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
        /* Start the first task. */\r
        vPortStartFirstTask();\r
-       \r
+\r
        /* Should never get here as the tasks will now be executing!  Call the task\r
        exit error function to prevent compiler warnings about a static function\r
        not being called in the case that the application writer overrides this\r
@@ -222,8 +222,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-  /* It is unlikely that the CM0 port will require this function as there\r
-    is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -250,6 +251,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
     uxCriticalNesting--;\r
     if( uxCriticalNesting == 0 )\r
     {\r
index 200b881ac8b2752cb21ca30145c6fb769bca6a19..0492ef4a758298a6c8e670acdc31dccacdc26314 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 9a164ede068390d4c22f26cd5049d0089b5ca253..e7dcd63cebcf766c2d9534d4d38d828dd79c9d01 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 8b3d9a4816a0c6042b3493cd11503f881093625d..140812a31f86da72eb531cdd7bd16efaf827560b 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -370,8 +370,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM3 port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -390,6 +391,7 @@ void vPortExitCritical( void )
 {\r
 portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();\r
 \r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
index eb4cafa73a31bc70c7cad3e3e65747f8a8ad4b9b..b2bda49d81c72d0988b92b34fd51febf7ce2b5eb 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index e846f6603e02a74fc1b6f5e9b76b29d6e48eebf5..cb411bc88d33e918e2b5f43154e00df07da61dbf 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 2dfc6c2479b75ed61ab0bb31a056f10203c27793..301aa8628643275586b68947a521bb1433dd4cac 100644 (file)
@@ -101,7 +101,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index dfb54a68e13fb3199508ecc4a6d1b1f4a3dba26f..ad022b0e1c78c10091b09717a3e1c4e9d98cedd2 100644 (file)
@@ -119,7 +119,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index bada2d6d6efa322a33c196936955e038fbebe88a..73bb0dbebaad991c99598736b7fba605484cae66 100644 (file)
@@ -96,7 +96,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index bff44b627f1744d2d85bdbe461fb4399a9a41918..76c4c4e25f5336637c7c639dc409a41379a0743d 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index bf077a8b53bb5f8fa3c605e951fc93fca5b13952..939266ab230cfe0377fb7ae78c1f90b8a63d35cb 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index d94e81ec8555cfe0f16120f988972b6bdc61c200..ddf523b93ac4d1a0e5f78dc3f57a9d746cfe174c 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 90ecf78eaedba6e814a4e415a540cabb015bcfd7..e986d6d26428c33a4e278468fe8ef67a7e5ef0ab 100644 (file)
@@ -72,7 +72,7 @@ extern "C" {
     #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
     typedef unsigned portLONG portTickType;\r
-    #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+    #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /* ------------------------ Architecture specifics ------------------------ */\r
index 4b80440e916022a26ad1211a117ea6e9884cf8f7..dbe229beef74886b58672bb28884ee35eb2aa4e5 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index bb3c37e5ef6f811446f71334e7902a0a65e994d1..39d70723ebb7d0e9cef8d13c9fd5933b99345c37 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index aa31f5546c12caa04ec22ac3169e15d05cd08a4b..1fe020a30ed001a623e9b038963c5be65bc63d81 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -80,8 +80,8 @@
 #include <xil_exception.h>\r
 #include <microblaze_exceptions_g.h>\r
 \r
-/* Tasks are started with a critical section nesting of 0 - however, prior to \r
-the scheduler being commenced interrupts should not be enabled, so the critical \r
+/* Tasks are started with a critical section nesting of 0 - however, prior to\r
+the scheduler being commenced interrupts should not be enabled, so the critical\r
 nesting variable is initialised to a non-zero value. */\r
 #define portINITIAL_NESTING_VALUE      ( 0xff )\r
 \r
@@ -100,14 +100,14 @@ created. */
  */\r
 static long prvInitialiseInterruptController( void );\r
 \r
-/* Ensure the interrupt controller instance variable is initialised before it is \r
- * used, and that the initialisation only happens once. \r
+/* Ensure the interrupt controller instance variable is initialised before it is\r
+ * used, and that the initialisation only happens once.\r
  */\r
 static long prvEnsureInterruptControllerIsInitialised( void );\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* Counts the nesting depth of calls to portENTER_CRITICAL().  Each task \r
+/* Counts the nesting depth of calls to portENTER_CRITICAL().  Each task\r
 maintains its own count, so this variable is saved as part of the task\r
 context. */\r
 volatile unsigned portBASE_TYPE uxCriticalNesting = portINITIAL_NESTING_VALUE;\r
@@ -121,8 +121,8 @@ unsigned long *pulISRStack;
 get set to 1.  ulTaskSwitchRequested is inspected just before the main interrupt\r
 handler exits.  If, at that time, ulTaskSwitchRequested is set to 1, the kernel\r
 will call vTaskSwitchContext() to ensure the task that runs immediately after\r
-the interrupt exists is the highest priority task that is able to run.  This is \r
-an unusual mechanism, but is used for this port because a single interrupt can \r
+the interrupt exists is the highest priority task that is able to run.  This is\r
+an unusual mechanism, but is used for this port because a single interrupt can\r
 cause the servicing of multiple peripherals - and it is inefficient to call\r
 vTaskSwitchContext() multiple times as each peripheral is serviced. */\r
 volatile unsigned long ulTaskSwitchRequested = 0UL;\r
@@ -133,10 +133,10 @@ static XIntc xInterruptControllerInstance;
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* \r
- * Initialise the stack of a task to look exactly as if a call to \r
+/*\r
+ * Initialise the stack of a task to look exactly as if a call to\r
  * portSAVE_CONTEXT had been made.\r
- * \r
+ *\r
  * See the portable.h header file.\r
  */\r
 portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )\r
@@ -145,7 +145,7 @@ extern void *_SDA2_BASE_, *_SDA_BASE_;
 const unsigned long ulR2 = ( unsigned long ) &_SDA2_BASE_;\r
 const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;\r
 \r
-       /* Place a few bytes of known values on the bottom of the stack. \r
+       /* Place a few bytes of known values on the bottom of the stack.\r
        This is essential for the Microblaze port and these lines must\r
        not be omitted. */\r
        *pxTopOfStack = ( portSTACK_TYPE ) 0x00000000;\r
@@ -170,7 +170,7 @@ const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;
        /* First stack an initial value for the critical section nesting.  This\r
        is initialised to zero. */\r
        *pxTopOfStack = ( portSTACK_TYPE ) 0x00;\r
-       \r
+\r
        /* R0 is always zero. */\r
        /* R1 is the SP. */\r
 \r
@@ -203,13 +203,13 @@ const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;
        #else\r
                pxTopOfStack-= 8;\r
        #endif\r
-       \r
+\r
        *pxTopOfStack = ( portSTACK_TYPE ) ulR13;       /* R13 - read/write small data area. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( portSTACK_TYPE ) pxCode;      /* R14 - return address for interrupt. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( portSTACK_TYPE ) NULL;        /* R15 - return address for subroutine. */\r
-       \r
+\r
        #ifdef portPRE_LOAD_STACK_FOR_DEBUGGING\r
                pxTopOfStack--;\r
                *pxTopOfStack = ( portSTACK_TYPE ) 0x10;        /* R16 - return address for trap (debugger). */\r
@@ -221,10 +221,10 @@ const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;
        #else\r
                pxTopOfStack -= 4;\r
        #endif\r
-       \r
+\r
        *pxTopOfStack = ( portSTACK_TYPE ) 0x00;        /* R19 - must be saved across function calls. Callee-save.  Seems to be interpreted as the frame pointer. */\r
-       \r
-       #ifdef portPRE_LOAD_STACK_FOR_DEBUGGING \r
+\r
+       #ifdef portPRE_LOAD_STACK_FOR_DEBUGGING\r
                pxTopOfStack--;\r
                *pxTopOfStack = ( portSTACK_TYPE ) 0x14;        /* R20 - reserved for storing a pointer to the Global Offset Table (GOT) in Position Independent Code (PIC). Non-volatile in non-PIC code. Must be saved across function calls. Callee-save.  Not used by FreeRTOS. */\r
                pxTopOfStack--;\r
@@ -254,7 +254,7 @@ const unsigned long ulR13 = ( unsigned long ) &_SDA_BASE_;
                pxTopOfStack -= 13;\r
        #endif\r
 \r
-       /* Return a pointer to the top of the stack that has been generated so this \r
+       /* Return a pointer to the top of the stack that has been generated so this\r
        can     be stored in the task control block for the task. */\r
        return pxTopOfStack;\r
 }\r
@@ -266,11 +266,11 @@ extern void ( vPortStartFirstTask )( void );
 extern unsigned long _stack[];\r
 \r
        /* Setup the hardware to generate the tick.  Interrupts are disabled when\r
-       this function is called.  \r
-       \r
+       this function is called.\r
+\r
        This port uses an application defined callback function to install the tick\r
-       interrupt handler because the kernel will run on lots of different \r
-       MicroBlaze and FPGA configurations - not all of which will have the same \r
+       interrupt handler because the kernel will run on lots of different\r
+       MicroBlaze and FPGA configurations - not all of which will have the same\r
        timer peripherals defined or available.  An example definition of\r
        vApplicationSetupTimerInterrupt() is provided in the official demo\r
        application that accompanies this port. */\r
@@ -294,12 +294,14 @@ extern unsigned long _stack[];
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 /*\r
- * Manual context switch called by portYIELD or taskYIELD.  \r
+ * Manual context switch called by portYIELD or taskYIELD.\r
  */\r
 void vPortYield( void )\r
 {\r
@@ -331,7 +333,7 @@ long lReturn;
        {\r
                XIntc_Enable( &xInterruptControllerInstance, ucInterruptID );\r
        }\r
-       \r
+\r
        configASSERT( lReturn );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -344,12 +346,12 @@ long lReturn;
        controller because the interrupt controller instance variable is private\r
        to this file. */\r
        lReturn = prvEnsureInterruptControllerIsInitialised();\r
-       \r
+\r
        if( lReturn == pdPASS )\r
        {\r
                XIntc_Disable( &xInterruptControllerInstance, ucInterruptID );\r
        }\r
-       \r
+\r
        configASSERT( lReturn );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -358,11 +360,11 @@ portBASE_TYPE xPortInstallInterruptHandler( unsigned char ucInterruptID, XInterr
 {\r
 long lReturn;\r
 \r
-       /* An API function is provided to install an interrupt handler because the \r
+       /* An API function is provided to install an interrupt handler because the\r
        interrupt controller instance variable is private to this file. */\r
 \r
        lReturn = prvEnsureInterruptControllerIsInitialised();\r
-       \r
+\r
        if( lReturn == pdPASS )\r
        {\r
                lReturn = XIntc_Connect( &xInterruptControllerInstance, ucInterruptID, pxHandler, pvCallBackRef );\r
@@ -372,7 +374,7 @@ long lReturn;
        {\r
                lReturn = pdPASS;\r
        }\r
-       \r
+\r
        configASSERT( lReturn == pdPASS );\r
 \r
        return lReturn;\r
@@ -389,7 +391,7 @@ long lReturn;
        if( lInterruptControllerInitialised != pdTRUE )\r
        {\r
                lReturn = prvInitialiseInterruptController();\r
-               \r
+\r
                if( lReturn == pdPASS )\r
                {\r
                        lInterruptControllerInitialised = pdTRUE;\r
@@ -404,7 +406,7 @@ long lReturn;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-/* \r
+/*\r
  * Handler for the timer interrupt.  This is the handler that the application\r
  * defined callback function vApplicationSetupTimerInterrupt() should install.\r
  */\r
@@ -416,11 +418,11 @@ extern void vApplicationClearTimerInterrupt( void );
        ( void ) pvUnused;\r
 \r
        /* This port uses an application defined callback function to clear the tick\r
-       interrupt because the kernel will run on lots of different MicroBlaze and \r
-       FPGA configurations - not all of which will have the same timer peripherals \r
+       interrupt because the kernel will run on lots of different MicroBlaze and\r
+       FPGA configurations - not all of which will have the same timer peripherals\r
        defined or available.  An example definition of\r
        vApplicationClearTimerInterrupt() is provided in the official demo\r
-       application that accompanies this port. */      \r
+       application that accompanies this port. */\r
        vApplicationClearTimerInterrupt();\r
 \r
        /* Increment the RTOS tick - this might cause a task to unblock. */\r
index 60067bd8c1e1e9cfc4e9edd3e4d2d456d37af9d7..73e4248c75f9c0a7f336b46eea3e3728518ebf6b 100644 (file)
@@ -98,7 +98,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 38301647ce4a5cdd4e3313a8b4097a75c4694731..8e8ba3898468114efe8b06e2316db67bafaac716 100644 (file)
@@ -96,7 +96,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 2201debfedde5eec6ad16796f37ae7aea91c4299..3a57cf146480ec17636c0e1ef934b2ee54e236f3 100644 (file)
@@ -96,7 +96,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 2201debfedde5eec6ad16796f37ae7aea91c4299..3a57cf146480ec17636c0e1ef934b2ee54e236f3 100644 (file)
@@ -96,7 +96,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 35ed60087e1ed276f66d32868c78fd3eac866b12..24fab584b4275ebd3c6e4a97558ddf69296246a4 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -299,7 +299,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 00d737e917fd88c9f844be10d802b139349497a1..c51ae9d50266cd250e28b223d2581810ca2c06b2 100644 (file)
@@ -96,7 +96,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 4d05d45bfbe23b5e70ec4f8c42a6a456567202e4..68b4d5a6dc772f2be62efe6bdf729b3bfd9a74f7 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* Tasks should start with interrupts enabled and in Supervisor mode, therefore \r
+/* Tasks should start with interrupts enabled and in Supervisor mode, therefore\r
 PSW is set with U and I set, and PM and IPL clear. */\r
 #define portINITIAL_PSW     ( ( portSTACK_TYPE ) 0x00030000 )\r
 #define portINITIAL_FPSW    ( ( portSTACK_TYPE ) 0x00000100 )\r
 \r
 /* These macros allow a critical section to be added around the call to\r
-xTaskIncrementTick(), which is only ever called from interrupts at the kernel \r
-priority - ie a known priority.  Therefore these local macros are a slight \r
-optimisation compared to calling the global SET/CLEAR_INTERRUPT_MASK macros, \r
+xTaskIncrementTick(), which is only ever called from interrupts at the kernel\r
+priority - ie a known priority.  Therefore these local macros are a slight\r
+optimisation compared to calling the global SET/CLEAR_INTERRUPT_MASK macros,\r
 which would require the old IPL to be read first and stored in a local variable. */\r
 #define portDISABLE_INTERRUPTS_FROM_KERNEL_ISR()       __asm volatile ( "MVTIPL        %0" ::"i"(configMAX_SYSCALL_INTERRUPT_PRIORITY) )\r
 #define portENABLE_INTERRUPTS_FROM_KERNEL_ISR()        __asm volatile ( "MVTIPL        %0" ::"i"(configKERNEL_INTERRUPT_PRIORITY) )\r
@@ -96,7 +96,7 @@ which would require the old IPL to be read first and stored in a local variable.
 \r
 /*\r
  * Function to start the first task executing - written in asm code as direct\r
- * access to registers is required. \r
+ * access to registers is required.\r
  */\r
 static void prvStartFirstTask( void ) __attribute__((naked));\r
 \r
@@ -118,19 +118,19 @@ extern void *pxCurrentTCB;
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* \r
- * See header file for description. \r
+/*\r
+ * See header file for description.\r
  */\r
 portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )\r
 {\r
        /* R0 is not included as it is the stack pointer. */\r
-       \r
+\r
        *pxTopOfStack = 0x00;\r
        pxTopOfStack--;\r
        *pxTopOfStack = portINITIAL_PSW;\r
        pxTopOfStack--;\r
        *pxTopOfStack = ( portSTACK_TYPE ) pxCode;\r
-       \r
+\r
        /* When debugging it can be useful if every register is set to a known\r
        value.  Otherwise code space can be saved by just setting the registers\r
        that need to be set. */\r
@@ -171,9 +171,9 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
                pxTopOfStack -= 15;\r
        }\r
        #endif\r
-       \r
+\r
        *pxTopOfStack = ( portSTACK_TYPE ) pvParameters; /* R1 */\r
-       pxTopOfStack--;                         \r
+       pxTopOfStack--;\r
        *pxTopOfStack = portINITIAL_FPSW;\r
        pxTopOfStack--;\r
        *pxTopOfStack = 0x12345678; /* Accumulator. */\r
@@ -192,16 +192,16 @@ extern void vApplicationSetupTimerInterrupt( void );
        if( pxCurrentTCB != NULL )\r
        {\r
                /* Call an application function to set up the timer that will generate the\r
-               tick interrupt.  This way the application can decide which peripheral to \r
+               tick interrupt.  This way the application can decide which peripheral to\r
                use.  A demo application is provided to show a suitable example. */\r
                vApplicationSetupTimerInterrupt();\r
 \r
-               /* Enable the software interrupt. */            \r
+               /* Enable the software interrupt. */\r
                _IEN( _ICU_SWINT ) = 1;\r
-               \r
+\r
                /* Ensure the software interrupt is clear. */\r
                _IR( _ICU_SWINT ) = 0;\r
-               \r
+\r
                /* Ensure the software interrupt is set to the kernel priority. */\r
                _IPR( _ICU_SWINT ) = configKERNEL_INTERRUPT_PRIORITY;\r
 \r
@@ -216,43 +216,45 @@ extern void vApplicationSetupTimerInterrupt( void );
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 static void prvStartFirstTask( void )\r
 {\r
        __asm volatile\r
-       (       \r
+       (\r
                /* When starting the scheduler there is nothing that needs moving to the\r
                interrupt stack because the function is not called from an interrupt.\r
                Just ensure the current stack is the user stack. */\r
                "SETPSW         U                                               \n" \\r
 \r
-               /* Obtain the location of the stack associated with which ever task \r
+               /* Obtain the location of the stack associated with which ever task\r
                pxCurrentTCB is currently pointing to. */\r
                "MOV.L          #_pxCurrentTCB, R15             \n" \\r
                "MOV.L          [R15], R15                              \n" \\r
                "MOV.L          [R15], R0                               \n" \\r
 \r
-               /* Restore the registers from the stack of the task pointed to by \r
+               /* Restore the registers from the stack of the task pointed to by\r
                pxCurrentTCB. */\r
            "POP                R15                                             \n" \\r
-               \r
+\r
                /* Accumulator low 32 bits. */\r
            "MVTACLO    R15                                     \n" \\r
            "POP                R15                                             \n" \\r
-               \r
+\r
                /* Accumulator high 32 bits. */\r
            "MVTACHI    R15                                     \n" \\r
            "POP                R15                                             \n" \\r
-               \r
+\r
                /* Floating point status word. */\r
            "MVTC               R15, FPSW                               \n" \\r
-               \r
+\r
                /* R1 to R15 - R0 is not included as it is the SP. */\r
            "POPM               R1-R15                                  \n" \\r
-               \r
+\r
                /* This pops the remaining registers. */\r
            "RTE                                                                \n" \\r
            "NOP                                                                \n" \\r
@@ -269,18 +271,18 @@ void vSoftwareInterruptISR( void )
                "SETPSW         I                                                       \n" \\r
 \r
                /* Move the data that was automatically pushed onto the interrupt stack when\r
-               the interrupt occurred from the interrupt stack to the user stack.  \r
-       \r
+               the interrupt occurred from the interrupt stack to the user stack.\r
+\r
                R15 is saved before it is clobbered. */\r
                "PUSH.L         R15                                                     \n" \\r
-       \r
+\r
                /* Read the user stack pointer. */\r
                "MVFC           USP, R15                                        \n" \\r
-       \r
+\r
                /* Move the address down to the data being moved. */\r
                "SUB            #12, R15                                        \n" \\r
                "MVTC           R15, USP                                        \n" \\r
-       \r
+\r
                /* Copy the data across, R15, then PC, then PSW. */\r
                "MOV.L          [ R0 ], [ R15 ]                         \n" \\r
                "MOV.L          4[ R0 ], 4[ R15 ]                       \n" \\r
@@ -288,22 +290,22 @@ void vSoftwareInterruptISR( void )
 \r
                /* Move the interrupt stack pointer to its new correct position. */\r
                "ADD            #12, R0                                         \n" \\r
-       \r
+\r
                /* All the rest of the registers are saved directly to the user stack. */\r
                "SETPSW         U                                                       \n" \\r
 \r
                /* Save the rest of the general registers (R15 has been saved already). */\r
                "PUSHM          R1-R14                                          \n" \\r
-       \r
+\r
                /* Save the FPSW and accumulator. */\r
                "MVFC           FPSW, R15                                       \n" \\r
                "PUSH.L         R15                                                     \n" \\r
                "MVFACHI        R15                                                     \n" \\r
                "PUSH.L         R15                                                     \n" \\r
-               \r
+\r
                /* Middle word. */\r
                "MVFACMI        R15                                                     \n" \\r
-               \r
+\r
                /* Shifted left as it is restored to the low order word. */\r
                "SHLL           #16, R15                                        \n" \\r
                "PUSH.L         R15                                                     \n" \\r
@@ -312,7 +314,7 @@ void vSoftwareInterruptISR( void )
                "MOV.L          #_pxCurrentTCB, R15                     \n" \\r
                "MOV.L          [ R15 ], R15                            \n" \\r
                "MOV.L          R0, [ R15 ]                                     \n" \\r
-                       \r
+\r
                /* Ensure the interrupt mask is set to the syscall priority while the kernel\r
                structures are being accessed. */\r
                "MVTIPL         %0                                                      \n" \\r
@@ -350,7 +352,7 @@ void vTickISR( void )
 {\r
        /* Re-enabled interrupts. */\r
        __asm volatile( "SETPSW I" );\r
-       \r
+\r
        /* Increment the tick, and perform any processing the new tick value\r
        necessitates.  Ensure IPL is at the max syscall value first. */\r
        portDISABLE_INTERRUPTS_FROM_KERNEL_ISR();\r
@@ -367,12 +369,12 @@ void vTickISR( void )
 unsigned long ulPortGetIPL( void )\r
 {\r
        __asm volatile\r
-       ( \r
+       (\r
                "MVFC   PSW, R1                 \n"     \\r
                "SHLR   #24, R1                 \n"     \\r
                "RTS                                      "\r
        );\r
-       \r
+\r
        /* This will never get executed, but keeps the compiler from complaining. */\r
        return 0;\r
 }\r
@@ -381,7 +383,7 @@ unsigned long ulPortGetIPL( void )
 void vPortSetIPL( unsigned long ulNewIPL )\r
 {\r
        __asm volatile\r
-       ( \r
+       (\r
                "PUSH   R5                              \n" \\r
                "MVFC   PSW, R5                 \n"     \\r
                "SHLL   #24, R1                 \n" \\r
index 5338c22fb7b226c2e99aa3f066bece0bc5f5c6ee..c17591af10ad423722d2d3fe7f73d4d283394192 100644 (file)
@@ -96,7 +96,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 851f2c0de51beb2029f8a129aad34d9b5a388a7a..8621f7452d804acc090b4910c57cbd96f8c5baf8 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 67fec8ef68cfb781acee47f6e4fef6623ca07210..bbe15baae73d8cbe40ffb8782759f9d450ab6913 100644 (file)
@@ -98,7 +98,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*---------------------------------------------------------------------------*/\r
 \r
index 71faa1b00c184881a71ef8e66d2cd264a3d2ed01..e1842a8012513ed1033ccf1fb47fc1a240015c58 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index fc79ce54eb38e54cb2aeb8e752b10010f7120534..8e86d3406273c67fd73556f1b13fd5be01aa2969 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -297,8 +297,9 @@ unsigned long ulAPSR;
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the ARM port will require this function as there\r
-       is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( ulCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 7c203b91db5f8d4429b94725e1a1fd936d45778f..c0c79c78d775671caff3c419721f8a5bae9b5bd8 100644 (file)
@@ -94,7 +94,7 @@
        #define portSTACK_TYPE  unsigned long\r
        #define portBASE_TYPE   portLONG\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 \r
        /*-----------------------------------------------------------*/\r
 \r
index 813cde995b9c3d918431de6cdb49729687d15794..c1fa1370963c58dc1073617b8f50dc2477500b0d 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -145,13 +145,13 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
 static void prvTaskExitError( void )\r
 {\r
        /* A function that implements a task must not exit or attempt to return to\r
-       its caller as there is nothing to return to.  If a task wants to exit it \r
+       its caller as there is nothing to return to.  If a task wants to exit it\r
        should instead call vTaskDelete( NULL ).\r
-       \r
-       Artificially force an assert() to be triggered if configASSERT() is \r
+\r
+       Artificially force an assert() to be triggered if configASSERT() is\r
        defined, then stop here so application writers can catch the error. */\r
        configASSERT( uxCriticalNesting == ~0UL );\r
-       portDISABLE_INTERRUPTS();       \r
+       portDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -182,8 +182,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM0 port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -210,6 +211,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
index 31f672bebcb09c0e5d8a06a827d749ffda7ff014..67d04cfcb38cf93aa6f53522c58c2e404f373d8b 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 94519613cbb05327f5e7bb7ba33803734840d4e7..4e718a4ac30445f934692e98c1460d89bb35d508 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -214,13 +214,13 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
 static void prvTaskExitError( void )\r
 {\r
        /* A function that implements a task must not exit or attempt to return to\r
-       its caller as there is nothing to return to.  If a task wants to exit it \r
+       its caller as there is nothing to return to.  If a task wants to exit it\r
        should instead call vTaskDelete( NULL ).\r
-       \r
-       Artificially force an assert() to be triggered if configASSERT() is \r
+\r
+       Artificially force an assert() to be triggered if configASSERT() is\r
        defined, then stop here so application writers can catch the error. */\r
        configASSERT( uxCriticalNesting == ~0UL );\r
-       portDISABLE_INTERRUPTS();       \r
+       portDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -295,8 +295,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM3 port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -323,6 +324,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
@@ -390,10 +392,10 @@ void xPortSysTickHandler( void )
                        /* Restart from whatever is left in the count register to complete\r
                        this tick period. */\r
                        portNVIC_SYSTICK_LOAD_REG = portNVIC_SYSTICK_CURRENT_VALUE_REG;\r
-                       \r
+\r
                        /* Restart SysTick. */\r
                        portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT;\r
-                       \r
+\r
                        /* Reset the reload register to the value required for normal tick\r
                        periods. */\r
                        portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL;\r
@@ -442,23 +444,23 @@ void xPortSysTickHandler( void )
                        if( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 )\r
                        {\r
                                unsigned long ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt has already executed, and the SysTick\r
                                count reloaded with ulReloadValue.  Reset the\r
                                portNVIC_SYSTICK_LOAD_REG with whatever remains of this tick\r
                                period. */\r
                                ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG );\r
 \r
-                               /* Don't allow a tiny value, or values that have somehow \r
-                               underflowed because the post sleep hook did something \r
+                               /* Don't allow a tiny value, or values that have somehow\r
+                               underflowed because the post sleep hook did something\r
                                that took too long. */\r
                                if( ( ulCalculatedLoadValue < ulStoppedTimerCompensation ) || ( ulCalculatedLoadValue > ulTimerCountsForOneTick ) )\r
                                {\r
                                        ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL );\r
                                }\r
-                               \r
+\r
                                portNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt handler will already have pended the tick\r
                                processing in the kernel.  As the pending tick will be\r
                                processed as soon as this function exits, the tick value\r
index 0b46f09c8e021b85413fc4c50a4e956185198da0..95b8b1870c58583aabb76fa33e27d46586a73ad4 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -321,8 +321,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM4F port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -349,6 +350,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
@@ -468,23 +470,23 @@ void xPortSysTickHandler( void )
                        if( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 )\r
                        {\r
                                unsigned long ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt has already executed, and the SysTick\r
                                count reloaded with ulReloadValue.  Reset the\r
                                portNVIC_SYSTICK_LOAD_REG with whatever remains of this tick\r
                                period. */\r
                                ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG );\r
 \r
-                               /* Don't allow a tiny value, or values that have somehow \r
-                               underflowed because the post sleep hook did something \r
+                               /* Don't allow a tiny value, or values that have somehow\r
+                               underflowed because the post sleep hook did something\r
                                that took too long. */\r
                                if( ( ulCalculatedLoadValue < ulStoppedTimerCompensation ) || ( ulCalculatedLoadValue > ulTimerCountsForOneTick ) )\r
                                {\r
                                        ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL );\r
                                }\r
-                               \r
+\r
                                portNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt handler will already have pended the tick\r
                                processing in the kernel.  As the pending tick will be\r
                                processed as soon as this function exits, the tick value\r
index 8e2c0e23c2fd807cc9c3d7c1fc786469c17487db..dfe6acfb6db7c3f5550c1a4bf2b1f562b4576d8b 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 9d5dee98328992416c451c03427fbc1154eadd40..1f66144773f05bf42c79ea7341c80fc71550c46c 100644 (file)
@@ -102,7 +102,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /*-----------------------------------------------------------*/\r
index 196379f7b87ea3fc5001e503d9e37c9bbeb0af22..fb781c224701c44e135c20955735913a2360f11a 100644 (file)
@@ -120,7 +120,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
   typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 1801b19538e87734c2c959da8bd5bf977e333a31..13a35ac24ceb0bedbb9a2b1bca2716856fc90127 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index ca29e3e5594723b672f818483d180805a3498e2f..0a763e866b56f30fe2440017a61575018cbdd9d8 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 30b20f2d2fc1d595d7c13d5f0ad8244170b58036..6172cd6a5d32f1d3ced4b9fb97000a3b981cbcb1 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 9f930f954bf240fb62f273815f970fb8f48d2ef3..86174be24e77ae99863d92d65bfa0769e1911f99 100644 (file)
@@ -90,7 +90,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /*-----------------------------------------------------------*/        \r
index 2f31dde2cdcd4a07e79455a4d1d1559cebef6df8..68a75eadb0145d50f1fe6308fada1ead0be56ddc 100644 (file)
@@ -99,7 +99,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /*-----------------------------------------------------------*/        \r
index 05a2dde7331778e286680715727b5ba209aafde8..a02c896c2267484271278366b510953a7ecde1d5 100644 (file)
@@ -110,7 +110,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 757fb3694ef94c819c53f454becbaa4e38a4bd8c..a2e49bd3c2474f17e6e1fefb5119f5806fc938b9 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -317,7 +317,9 @@ __interrupt static void prvTickISR( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 78376394de1ca558f748917140e3e5dfbb7537ed..e21653038ad0dd81964f09b75a179aa137b49c1b 100644 (file)
@@ -101,7 +101,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 31dfcca5cbad113bb308897e647d2da6794e1df7..53fa6104c0fcbd13070b53ab7c3f881f4ff09d76 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -221,7 +221,9 @@ __interrupt void vTickISR( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 971a495411317bf708decaf647216fd8070dad5c..2fd450e3bce978e50dd842c42ed1ee424ebb3d8c 100644 (file)
@@ -98,7 +98,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index b521b0b6f5f2776f804371e985ca7eab256f053f..3ae75b7f38ee4a026cd7bd4a9927bc3291fd68e3 100644 (file)
@@ -98,7 +98,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 898617ccf1593f63251c2e38fc7a12f7a6ba5f4f..4f7999258cf80af5f9728934a68f071c7412c080 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 2f9e06e455570d7df8cbcec23b917ad6e56655f3..31eedd0be24b383e4c966ca2a4241f8ad70703dc 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 7f3d86e400d9501a4e3c8966ced98c86ccedb2ec..2c1d2337f535a6e4f4f17d229fb2d37ff7358327 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index e0f4f4268be2ecf200c560dee52003841ca4a9ad..3327499a37586dfd1243e4313d8a68cabdb6ef52 100644 (file)
@@ -90,7 +90,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 7741e05ce677f5b7675934713a8a234364bb69ce..a19e1b15a8850d48d08b3cb10e58ac37c571ca00 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -300,9 +300,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the scheduler for the PIC port will get stopped\r
-       once running.  If required disable the tick interrupt here, then return\r
-       to xPortStartScheduler(). */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -346,6 +346,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
index c625f8c38d2cdf9acecbae5f0831d2f4ca0e4e0c..65c162901e76e4ce4bb018edd9622f126a3259d0 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 968cda3c4047e6bce57b58f72e7e51f3310e4ab3..cb8ba11d69f7cc1bedefb39cab83cbf623d5917b 100644 (file)
@@ -270,10 +270,9 @@ const unsigned long ulCompareMatch = ( (configPERIPHERAL_CLOCK_HZ / portTIMER_PR
 \r
 void vPortEndScheduler(void)\r
 {\r
-       /* It is unlikely that the scheduler for the PIC port will get stopped\r
-       once running.  If required disable the tick interrupt here, then return\r
-       to xPortStartScheduler(). */\r
-       for( ;; );\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxInterruptNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index a28796a0aea6830f4b73e3d58f94a87bf7ae6c14..e1730981e9e1ada3b77003a81a16e1c702ba3053 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 4e62b77d296671c9668004c7547e68afe9fc9629..4b2e2c07840750ee31103e94d51229cc5f9926ee 100644 (file)
@@ -279,10 +279,9 @@ const unsigned long ulCompareMatch = ( (configPERIPHERAL_CLOCK_HZ / portTIMER_PR
 \r
 void vPortEndScheduler(void)\r
 {\r
-       /* It is unlikely that the scheduler for the PIC port will get stopped\r
-       once running.  If required disable the tick interrupt here, then return\r
-       to xPortStartScheduler(). */\r
-       for( ;; );\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxInterruptNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 86dde730911b51d282fb1c191b7cf3052a684d18..cd4ca19279bf17419246ef76dee4aa002cb0c65a 100644 (file)
@@ -97,7 +97,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index e6aa4606cf65d639a43fac8a65f8cd1f59912e9d..518223622c8314a09845dfe2352d231157444f99 100644 (file)
@@ -85,7 +85,7 @@
     #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
     typedef unsigned portLONG portTickType;\r
-    #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+    #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /* Hardware specifics. */\r
index d94a8db89f7d1f0fdca6e5902cb5aa7473fa4903..6b979a7cf9029b278d0fe8163c0dc549444fede0 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index d8768dd19e7283555043dea634c0cad98fcdd68d..fe7bca553f1e77a24fa312ea01cdc053137045df 100644 (file)
@@ -96,7 +96,7 @@ typedef void ( __interrupt __far *pxISR )();
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index fcb4fc4a34c43980c1b87955f500c7f663c035e4..0dddc96922b4ecd0c91e1d077690e181ecab8536 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 818668498cc1d358e68b142f720ed00f7188f8f8..ba9634d9a41115355013ce100234c149eacab1fb 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -316,9 +316,9 @@ unsigned long ulAPSR;
                setting.  See the comments in vPortValidateInterruptPriority() below for\r
                more information. */\r
                configASSERT( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE );\r
-               \r
+\r
                if( ( portICCBPR_BINARY_POINT_REGISTER & portBINARY_POINT_BITS ) <= portMAX_BINARY_POINT_VALUE )\r
-               {       \r
+               {\r
                        /* Start the timer that generates the tick ISR. */\r
                        configSETUP_TICK_INTERRUPT();\r
 \r
@@ -336,8 +336,9 @@ unsigned long ulAPSR;
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the ARM port will require this function as there\r
-       is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( ulCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
index 75b1fd95d72e0019fabdfae1f29846be3fff1813..7aff296f799ea407e3e471846865405384e79d17 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned long portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 560dcf725071442a24d1791d8c6e99e3c01800af..e7bb261b41e80250417c5b45385fe965cce75577 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -142,20 +142,20 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
 static void prvTaskExitError( void )\r
 {\r
        /* A function that implements a task must not exit or attempt to return to\r
-       its caller as there is nothing to return to.  If a task wants to exit it \r
+       its caller as there is nothing to return to.  If a task wants to exit it\r
        should instead call vTaskDelete( NULL ).\r
-       \r
-       Artificially force an assert() to be triggered if configASSERT() is \r
+\r
+       Artificially force an assert() to be triggered if configASSERT() is\r
        defined, then stop here so application writers can catch the error. */\r
        configASSERT( uxCriticalNesting == ~0UL );\r
-       portDISABLE_INTERRUPTS();       \r
+       portDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
 void vPortSVCHandler( void )\r
 {\r
-       /* This function is no longer used, but retained for backward \r
+       /* This function is no longer used, but retained for backward\r
        compatibility. */\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -163,15 +163,15 @@ void vPortSVCHandler( void )
 __asm void prvPortStartFirstTask( void )\r
 {\r
        extern pxCurrentTCB;\r
-       \r
+\r
        PRESERVE8\r
-       \r
+\r
        /* The MSP stack is not reset as, unlike on M3/4 parts, there is no vector\r
        table offset register that can be used to locate the initial stack value.\r
        Not all M0 parts have the application vector table at address 0. */\r
-       \r
+\r
        ldr     r3, =pxCurrentTCB       /* Obtain location of pxCurrentTCB. */\r
-       ldr r1, [r3]                    \r
+       ldr r1, [r3]\r
        ldr r0, [r1]                    /* The first item in pxCurrentTCB is the task top of stack. */\r
        adds r0, #32                    /* Discard everything up to r0. */\r
        msr psp, r0                             /* This is now the new top of stack to use in the task. */\r
@@ -212,8 +212,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-  /* It is unlikely that the CM0 port will require this function as there\r
-    is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -240,6 +241,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
     uxCriticalNesting--;\r
     if( uxCriticalNesting == 0 )\r
     {\r
index 1b19d260c89d758398da97b6491367bbf1fbb47b..1f7aefa0ae612e40a325e36c1c9acf3fa5b0e35a 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 6bea4e5e84a85e62bfcbbbc65de0ccba932261e7..8e881953fbb44fdb502f6faf91aea4c321452e77 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -186,7 +186,7 @@ static void prvTaskExitError( void );
 #endif /* configUSE_TICKLESS_IDLE */\r
 \r
 /*\r
- * Used by the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() macro to ensure \r
+ * Used by the portASSERT_IF_INTERRUPT_PRIORITY_INVALID() macro to ensure\r
  * FreeRTOS API functions are not called from interrupts that have been assigned\r
  * a priority above configMAX_SYSCALL_INTERRUPT_PRIORITY.\r
  */\r
@@ -223,13 +223,13 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
 static void prvTaskExitError( void )\r
 {\r
        /* A function that implements a task must not exit or attempt to return to\r
-       its caller as there is nothing to return to.  If a task wants to exit it \r
+       its caller as there is nothing to return to.  If a task wants to exit it\r
        should instead call vTaskDelete( NULL ).\r
-       \r
-       Artificially force an assert() to be triggered if configASSERT() is \r
+\r
+       Artificially force an assert() to be triggered if configASSERT() is\r
        defined, then stop here so application writers can catch the error. */\r
        configASSERT( uxCriticalNesting == ~0UL );\r
-       portDISABLE_INTERRUPTS();       \r
+       portDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -338,8 +338,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM3 port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -366,6 +367,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
@@ -466,10 +468,10 @@ void xPortSysTickHandler( void )
                        /* Restart from whatever is left in the count register to complete\r
                        this tick period. */\r
                        portNVIC_SYSTICK_LOAD_REG = portNVIC_SYSTICK_CURRENT_VALUE_REG;\r
-                       \r
+\r
                        /* Restart SysTick. */\r
                        portNVIC_SYSTICK_CTRL_REG = portNVIC_SYSTICK_CLK_BIT | portNVIC_SYSTICK_INT_BIT | portNVIC_SYSTICK_ENABLE_BIT;\r
-                       \r
+\r
                        /* Reset the reload register to the value required for normal tick\r
                        periods. */\r
                        portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL;\r
@@ -518,23 +520,23 @@ void xPortSysTickHandler( void )
                        if( ( portNVIC_SYSTICK_CTRL_REG & portNVIC_SYSTICK_COUNT_FLAG_BIT ) != 0 )\r
                        {\r
                                unsigned long ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt has already executed, and the SysTick\r
                                count reloaded with ulReloadValue.  Reset the\r
                                portNVIC_SYSTICK_LOAD_REG with whatever remains of this tick\r
                                period. */\r
                                ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL ) - ( ulReloadValue - portNVIC_SYSTICK_CURRENT_VALUE_REG );\r
 \r
-                               /* Don't allow a tiny value, or values that have somehow \r
-                               underflowed because the post sleep hook did something \r
+                               /* Don't allow a tiny value, or values that have somehow\r
+                               underflowed because the post sleep hook did something\r
                                that took too long. */\r
                                if( ( ulCalculatedLoadValue < ulStoppedTimerCompensation ) || ( ulCalculatedLoadValue > ulTimerCountsForOneTick ) )\r
                                {\r
                                        ulCalculatedLoadValue = ( ulTimerCountsForOneTick - 1UL );\r
                                }\r
-                               \r
+\r
                                portNVIC_SYSTICK_LOAD_REG = ulCalculatedLoadValue;\r
-                               \r
+\r
                                /* The tick interrupt handler will already have pended the tick\r
                                processing in the kernel.  As the pending tick will be\r
                                processed as soon as this function exits, the tick value\r
@@ -627,7 +629,7 @@ __asm void vPortClearInterruptMask( unsigned long ulNewMask )
 __asm unsigned long vPortGetIPSR( void )\r
 {\r
        PRESERVE8\r
-       \r
+\r
        mrs r0, ipsr\r
        bx r14\r
 }\r
index 2f9f4bef290c2dee1abf7c38e547625cc104f381..e7c0c33e7999129d0648c3e74aa2d9522a6f485b 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 125edaab5421d9bdff40fce1c0fef97dcff8ba40..615f2fa8b8f44c6b904361bf9aca7de3c0a01a58 100644 (file)
@@ -382,8 +382,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM4F port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( uxCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -410,6 +411,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( uxCriticalNesting );\r
        uxCriticalNesting--;\r
        if( uxCriticalNesting == 0 )\r
        {\r
index 144db9fc2104f429c0a56ddaf77dab4dc99823d0..52beda0f81b68853001675cb2a0c8fc7ce1713b6 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 6f3558eea3045e7aa9ed538a122a52074f7f8fd5..5f49466464076a5e0d885109f0093ed342f6a22f 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -444,7 +444,9 @@ static void prvYieldHandler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 \r
        /* The following line is just to prevent the symbol getting optimised away. */\r
        ( void ) vTaskSwitchContext();\r
index ba02d2413688eb3ab461df46abab88f1bbd00e52..bdf7fd0d9d80ab19b12a6923dea4f64e49f32075 100644 (file)
@@ -99,7 +99,7 @@ than portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 66afeaac972696dd5c832db5b2a2a4e6feda3d0e..2dad68672e95339d2341538a821b0b60ad55b10e 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -79,7 +79,7 @@
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* Tasks should start with interrupts enabled and in Supervisor mode, therefore \r
+/* Tasks should start with interrupts enabled and in Supervisor mode, therefore\r
 PSW is set with U and I set, and PM and IPL clear. */\r
 #define portINITIAL_PSW     ( ( portSTACK_TYPE ) 0x00030000 )\r
 \r
@@ -95,7 +95,7 @@ const portBASE_TYPE * p_vSoftwareInterruptEntry = &vSoftwareInterruptEntry;
 \r
 /*\r
  * Function to start the first task executing - written in asm code as direct\r
- * access to registers is required. \r
+ * access to registers is required.\r
  */\r
 static void prvStartFirstTask( void );\r
 \r
@@ -108,7 +108,7 @@ static void prvYieldHandler( void );
 \r
 /*\r
  * The entry point for the software interrupt handler.  This is the function\r
- * that calls the inline asm function prvYieldHandler().  It is installed in \r
+ * that calls the inline asm function prvYieldHandler().  It is installed in\r
  * the vector table, but the code that installs it is in prvYieldHandler rather\r
  * than using a #pragma.\r
  */\r
@@ -123,8 +123,8 @@ extern void vTaskSwitchContext( void );
 \r
 /*-----------------------------------------------------------*/\r
 \r
-/* \r
- * See header file for description. \r
+/*\r
+ * See header file for description.\r
  */\r
 portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )\r
 {\r
@@ -180,9 +180,9 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
                pxTopOfStack -= 15;\r
        }\r
        #endif\r
-       \r
+\r
        *pxTopOfStack = ( portSTACK_TYPE ) pvParameters; /* R1 */\r
-       pxTopOfStack--;                         \r
+       pxTopOfStack--;\r
        *pxTopOfStack = 0x12345678; /* Accumulator. */\r
        pxTopOfStack--;\r
        *pxTopOfStack = 0x87654321; /* Accumulator. */\r
@@ -199,19 +199,19 @@ extern void vApplicationSetupTimerInterrupt( void );
        if( pxCurrentTCB != NULL )\r
        {\r
                /* Call an application function to set up the timer that will generate the\r
-               tick interrupt.  This way the application can decide which peripheral to \r
+               tick interrupt.  This way the application can decide which peripheral to\r
                use.  A demo application is provided to show a suitable example. */\r
                vApplicationSetupTimerInterrupt();\r
 \r
-               /* Enable the software interrupt. */            \r
+               /* Enable the software interrupt. */\r
                _IEN( _ICU_SWINT ) = 1;\r
-               \r
+\r
                /* Ensure the software interrupt is clear. */\r
                _IR( _ICU_SWINT ) = 0;\r
-               \r
+\r
                /* Ensure the software interrupt is set to the kernel priority. */\r
                _IPR( _ICU_SWINT ) = configKERNEL_INTERRUPT_PRIORITY;\r
-       \r
+\r
                /* Start the first task. */\r
                prvStartFirstTask();\r
        }\r
@@ -232,13 +232,13 @@ static void prvStartFirstTask( void )
        Just ensure the current stack is the user stack. */\r
        SETPSW  U\r
 \r
-       /* Obtain the location of the stack associated with which ever task \r
+       /* Obtain the location of the stack associated with which ever task\r
        pxCurrentTCB is currently pointing to. */\r
        MOV.L   #_pxCurrentTCB, R15\r
        MOV.L   [R15], R15\r
        MOV.L   [R15], R0\r
 \r
-       /* Restore the registers from the stack of the task pointed to by \r
+       /* Restore the registers from the stack of the task pointed to by\r
        pxCurrentTCB. */\r
     POP                R15\r
     MVTACLO    R15             /* Accumulator low 32 bits. */\r
@@ -280,18 +280,18 @@ static void prvYieldHandler( void )
        SETPSW  I\r
 \r
        /* Move the data that was automatically pushed onto the interrupt stack when\r
-       the interrupt occurred from the interrupt stack to the user stack.  \r
-       \r
+       the interrupt occurred from the interrupt stack to the user stack.\r
+\r
        R15 is saved before it is clobbered. */\r
        PUSH.L  R15\r
-       \r
+\r
        /* Read the user stack pointer. */\r
        MVFC    USP, R15\r
-       \r
+\r
        /* Move the address down to the data being moved. */\r
        SUB             #12, R15\r
        MVTC    R15, USP\r
-       \r
+\r
        /* Copy the data across. */\r
        MOV.L   [ R0 ], [ R15 ] ; R15\r
        MOV.L   4[ R0 ], 4[ R15 ]  ; PC\r
@@ -299,13 +299,13 @@ static void prvYieldHandler( void )
 \r
        /* Move the interrupt stack pointer to its new correct position. */\r
        ADD     #12, R0\r
-       \r
+\r
        /* All the rest of the registers are saved directly to the user stack. */\r
        SETPSW  U\r
 \r
        /* Save the rest of the general registers (R15 has been saved already). */\r
        PUSHM   R1-R14\r
-       \r
+\r
        /* Save the accumulator. */\r
        MVFACHI R15\r
        PUSH.L  R15\r
@@ -317,7 +317,7 @@ static void prvYieldHandler( void )
        MOV.L   #_pxCurrentTCB, R15\r
        MOV.L   [ R15 ], R15\r
        MOV.L   R0, [ R15 ]\r
-                       \r
+\r
        /* Ensure the interrupt mask is set to the syscall priority while the kernel\r
        structures are being accessed. */\r
        MVTIPL  #configMAX_SYSCALL_INTERRUPT_PRIORITY\r
@@ -349,8 +349,10 @@ static void prvYieldHandler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
-       \r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
+\r
        /* The following line is just to prevent the symbol getting optimised away. */\r
        ( void ) vTaskSwitchContext();\r
 }\r
index 4db447f2b14d1295ca0f00d1a94e20d3218ffdd6..575bd12acaad66bf575e7c25e46f5428b4bb24c9 100644 (file)
@@ -99,7 +99,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 3078c66171264a7e00d65666bcf6d989d71b3c37..636c8e62f3c74b259edc051a941327ebc1c98a78 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -354,7 +354,9 @@ static void prvYieldHandler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* Not implemented as there is nothing to return to. */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( pxCurrentTCB == NULL );\r
 \r
        /* The following line is just to prevent the symbol getting optimised away. */\r
        ( void ) vTaskSwitchContext();\r
index c145b77fcc3b9d9aa78a09d5c1753309bb0eaaab..847021405ccb65a4e338e85b200d45bdf441f5e9 100644 (file)
@@ -99,7 +99,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index dc3d6fe3c70246e7092a4b4eec765482d50b6401..d6fba0b4ecab08f8af13f84e6f27c906bab8eb85 100644 (file)
@@ -98,7 +98,7 @@ portSTACK_TYPE and portBASE_TYPE. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 580267439bedf8eb0a193f5ec753a285ebe863b2..322ae3e26c4e9a90b55158539e60ed7c156ea9a1 100644 (file)
@@ -90,7 +90,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 \r
 /*-----------------------------------------------------------*/        \r
index 1a338ab696b14adc9d8df736a57cec880bd200ac..9f4e33aa9fd2db4a52bd3deffd5570b12c580876 100644 (file)
@@ -99,7 +99,7 @@ void vSerialISR( void ) interrupt 4;
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 007e3fb7991c4264754612029b87165346a78097..26a931435155a491d67d047a7898c81cc65e5605 100644 (file)
@@ -96,7 +96,7 @@
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index 368557f9a54f32525e2f40228125b69713e3f7ca..c8fe208bfba8134eb5bc52265ddc35178682cd06 100644 (file)
@@ -102,7 +102,7 @@ FreeRTOSConfig.h to set the configMEMMODEL value. */
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/        \r
 \r
index bb9b9789c0e0909f8f1704668d8ff3088c84aa9e..02b99dbbbba5c648ab1a3ffb563df1fd5f38a5e0 100644 (file)
@@ -1,5 +1,5 @@
 /*\r
-    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd. \r
+    FreeRTOS V7.6.0 - Copyright (C) 2013 Real Time Engineers Ltd.\r
     All rights reserved\r
 \r
     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
@@ -169,13 +169,13 @@ portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE
 static void prvTaskExitError( void )\r
 {\r
        /* A function that implements a task must not exit or attempt to return to\r
-       its caller as there is nothing to return to.  If a task wants to exit it \r
+       its caller as there is nothing to return to.  If a task wants to exit it\r
        should instead call vTaskDelete( NULL ).\r
-       \r
-       Artificially force an assert() to be triggered if configASSERT() is \r
+\r
+       Artificially force an assert() to be triggered if configASSERT() is\r
        defined, then stop here so application writers can catch the error. */\r
        configASSERT( ulCriticalNesting == ~0UL );\r
-       portDISABLE_INTERRUPTS();       \r
+       portDISABLE_INTERRUPTS();\r
        for( ;; );\r
 }\r
 /*-----------------------------------------------------------*/\r
@@ -216,8 +216,9 @@ portBASE_TYPE xPortStartScheduler( void )
 \r
 void vPortEndScheduler( void )\r
 {\r
-       /* It is unlikely that the CM4F port will require this function as there\r
-       is nothing to return to.  */\r
+       /* Not implemented in ports where there is nothing to return to.\r
+       Artificially force an assert. */\r
+       configASSERT( ulCriticalNesting == 1000UL );\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r
@@ -244,6 +245,7 @@ void vPortEnterCritical( void )
 \r
 void vPortExitCritical( void )\r
 {\r
+       configASSERT( ulCriticalNesting );\r
        ulCriticalNesting--;\r
        if( ulCriticalNesting == 0 )\r
        {\r
index 42d66aa4a8a94cf293a41a17fbb95dcace7d1ac9..99596091d003febff8f9aa5956f8202308708895 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 7afc42f6078a5d4e21222912e7a9711d339614c3..e17e668343b414440099133a6578037948ad0cdb 100644 (file)
@@ -95,7 +95,7 @@ extern "C" {
         #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
         typedef unsigned portLONG portTickType;\r
-        #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+        #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 5a44f55055448fe4eec0f59bd5d32debf633a391..15e42fb663e5d386db7b4865c1e75c94149e7eb1 100644 (file)
@@ -94,7 +94,7 @@ extern "C" {
        #define portMAX_DELAY ( portTickType ) 0xffff\r
 #else\r
        typedef unsigned portLONG portTickType;\r
-       #define portMAX_DELAY ( portTickType ) 0xffffffff\r
+       #define portMAX_DELAY ( portTickType ) 0xffffffffUL\r
 #endif\r
 /*-----------------------------------------------------------*/\r
 \r
index 023aa41240e7009ed163e126e9d7770f12272c8e..43ceaca9279003fb25648d304481d61c9bb2f293 100644 (file)
@@ -418,7 +418,7 @@ xQueueHandle xReturn = NULL;
        void *pxReturn;\r
 \r
                /* This function is called by xSemaphoreGetMutexHolder(), and should not\r
-               be called directly.  Note:  This is is a good way of determining if the\r
+               be called directly.  Note:  This is a good way of determining if the\r
                calling task is the mutex holder, but not a good way of determining the\r
                identity of the mutex holder, as the holder may change between the\r
                following critical section exiting and the function returning. */\r
@@ -909,11 +909,11 @@ xQUEUE * const pxQueue = ( xQUEUE * ) xQueue;
                                                {\r
                                                        if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
                                                        {\r
-                                                               portENTER_CRITICAL();\r
+                                                               taskENTER_CRITICAL();\r
                                                                {\r
                                                                        vTaskPriorityInherit( ( void * ) pxQueue->pxMutexHolder );\r
                                                                }\r
-                                                               portEXIT_CRITICAL();\r
+                                                               taskEXIT_CRITICAL();\r
                                                        }\r
                                                }\r
                                                #endif\r
@@ -949,7 +949,7 @@ xQUEUE * const pxQueue = ( xQUEUE * ) xQueue;
 \r
        /* RTOS ports that support interrupt nesting have the concept of a maximum\r
        system call (or maximum API call) interrupt priority.  Interrupts that are\r
-       above the maximum system call priority are keep permanently enabled, even\r
+       above the maximum system call priority are kept permanently enabled, even\r
        when the RTOS kernel is in a critical section, but cannot make any calls to\r
        FreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\r
        then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\r
@@ -1175,11 +1175,11 @@ xQUEUE * const pxQueue = ( xQUEUE * ) xQueue;
                                {\r
                                        if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
                                        {\r
-                                               portENTER_CRITICAL();\r
+                                               taskENTER_CRITICAL();\r
                                                {\r
                                                        vTaskPriorityInherit( ( void * ) pxQueue->pxMutexHolder );\r
                                                }\r
-                                               portEXIT_CRITICAL();\r
+                                               taskEXIT_CRITICAL();\r
                                        }\r
                                }\r
                                #endif\r
@@ -1220,7 +1220,7 @@ xQUEUE * const pxQueue = ( xQUEUE * ) xQueue;
 \r
        /* RTOS ports that support interrupt nesting have the concept of a maximum\r
        system call (or maximum API call) interrupt priority.  Interrupts that are\r
-       above the maximum system call priority are keep permanently enabled, even\r
+       above the maximum system call priority are kept permanently enabled, even\r
        when the RTOS kernel is in a critical section, but cannot make any calls to\r
        FreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\r
        then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\r
@@ -1296,7 +1296,7 @@ xQUEUE * const pxQueue = ( xQUEUE * ) xQueue;
 \r
        /* RTOS ports that support interrupt nesting have the concept of a maximum\r
        system call (or maximum API call) interrupt priority.  Interrupts that are\r
-       above the maximum system call priority are keep permanently enabled, even\r
+       above the maximum system call priority are kept permanently enabled, even\r
        when the RTOS kernel is in a critical section, but cannot make any calls to\r
        FreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\r
        then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\r
index 1c93cf3a840809f548909a078b19d7f01d9bf427..bf7475ab11e4dd1227a2a67b60b863bd76ab35c5 100644 (file)
@@ -192,7 +192,7 @@ PRIVILEGED_DATA static xList xPendingReadyList;                                                     /*< Tasks that have been r
 \r
 #if ( INCLUDE_vTaskDelete == 1 )\r
 \r
-       PRIVILEGED_DATA static xList xTasksWaitingTermination;                          /*< Tasks that have been deleted - but the their memory not yet freed. */\r
+       PRIVILEGED_DATA static xList xTasksWaitingTermination;                          /*< Tasks that have been deleted - but their memory not yet freed. */\r
        PRIVILEGED_DATA static volatile unsigned portBASE_TYPE uxTasksDeleted = ( unsigned portBASE_TYPE ) 0U;\r
 \r
 #endif\r
@@ -514,7 +514,7 @@ tskTCB * pxNewTCB;
                #endif /* portUSING_MPU_WRAPPERS == 1 */\r
 \r
                /* Calculate the top of stack address.  This depends on whether the\r
-               stack grows from high memory to low (as per the 80x86) or visa versa.\r
+               stack grows from high memory to low (as per the 80x86) or vice versa.\r
                portSTACK_GROWTH is used to make the result positive or negative as\r
                required by the port. */\r
                #if( portSTACK_GROWTH < 0 )\r
@@ -645,7 +645,8 @@ tskTCB * pxNewTCB;
 \r
                taskENTER_CRITICAL();\r
                {\r
-                       /* If null is passed in here then we are deleting ourselves. */\r
+                       /* If null is passed in here then it is the calling task that is\r
+                       being deleted. */\r
                        pxTCB = prvGetTCBFromHandle( xTaskToDelete );\r
 \r
                        /* Remove task from the ready list and place in the     termination list.\r
@@ -694,7 +695,7 @@ tskTCB * pxNewTCB;
 \r
 #if ( INCLUDE_vTaskDelayUntil == 1 )\r
 \r
-       void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement )\r
+       void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, const portTickType xTimeIncrement )\r
        {\r
        portTickType xTimeToWake;\r
        portBASE_TYPE xAlreadyYielded, xShouldDelay = pdFALSE;\r
@@ -771,7 +772,7 @@ tskTCB * pxNewTCB;
 \r
 #if ( INCLUDE_vTaskDelay == 1 )\r
 \r
-       void vTaskDelay( portTickType xTicksToDelay )\r
+       void vTaskDelay( const portTickType xTicksToDelay )\r
        {\r
        portTickType xTimeToWake;\r
        signed portBASE_TYPE xAlreadyYielded = pdFALSE;\r
@@ -831,6 +832,8 @@ tskTCB * pxNewTCB;
        xList *pxStateList;\r
        const tskTCB * const pxTCB = ( tskTCB * ) xTask;\r
 \r
+               configASSERT( pxTCB );\r
+\r
                if( pxTCB == pxCurrentTCB )\r
                {\r
                        /* The task calling this function is querying its own state. */\r
@@ -1108,9 +1111,9 @@ tskTCB * pxNewTCB;
 \r
 #if ( INCLUDE_vTaskSuspend == 1 )\r
 \r
-       signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask )\r
+       signed portBASE_TYPE xTaskIsTaskSuspended( const xTaskHandle xTask )\r
        {\r
-       portBASE_TYPE xReturn = pdFALSE;\r
+       signed portBASE_TYPE xReturn = pdFALSE;\r
        const tskTCB * const pxTCB = ( tskTCB * ) xTask;\r
 \r
                /* It does not make sense to check if the calling task is suspended. */\r
@@ -1460,7 +1463,7 @@ unsigned portBASE_TYPE uxSavedInterruptStatus;
 \r
        /* RTOS ports that support interrupt nesting have the concept of a maximum\r
        system call (or maximum API call) interrupt priority.  Interrupts that are\r
-       above the maximum system call priority are keep permanently enabled, even\r
+       above the maximum system call priority are kept permanently enabled, even\r
        when the RTOS kernel is in a critical section, but cannot make any calls to\r
        FreeRTOS API functions.  If configASSERT() is defined in FreeRTOSConfig.h\r
        then portASSERT_IF_INTERRUPT_PRIORITY_INVALID() will result in an assertion\r
@@ -1634,8 +1637,8 @@ portBASE_TYPE xSwitchRequired = pdFALSE;
                        }\r
 \r
                        /* See if this tick has made a timeout expire.  Tasks are stored in the\r
-                       queue in the order of their wake time - meaning once one tasks has been\r
-                       found whose block time has not expired there is no need not look any\r
+                       queue in the order of their wake time - meaning once one task has been\r
+                       found whose block time has not expired there is no need to look any\r
                        further down the list. */\r
                        if( xConstTickCount >= xNextTaskUnblockTime )\r
                        {\r
@@ -1757,7 +1760,8 @@ portBASE_TYPE xSwitchRequired = pdFALSE;
        {\r
        tskTCB *xTCB;\r
 \r
-               /* If xTask is NULL then we are setting our own task hook. */\r
+               /* If xTask is NULL then it is the task hook of the calling task that is\r
+               getting set. */\r
                if( xTask == NULL )\r
                {\r
                        xTCB = ( tskTCB * ) pxCurrentTCB;\r
@@ -1956,7 +1960,7 @@ portTickType xTimeToWake;
        /* Store the item value in the event list item. */\r
        listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xEventListItem ), xItemValue );\r
 \r
-       /* Place the event list item of the TCB at the end of the appropriate event \r
+       /* Place the event list item of the TCB at the end of the appropriate event\r
        list. */\r
        vListInsertEnd( pxEventList, &( pxCurrentTCB->xEventListItem ) );\r
 \r
@@ -2118,7 +2122,7 @@ portBASE_TYPE xReturn;
        }\r
        else\r
        {\r
-               /* Cannot access the delayed or ready lists, so will hold this task \r
+               /* Cannot access the delayed or ready lists, so will hold this task\r
                pending until the scheduler is resumed. */\r
                vListInsertEnd( &( xPendingReadyList ), pxEventListItem );\r
        }\r
@@ -2603,8 +2607,13 @@ tskTCB *pxNewTCB;
                }\r
                else\r
                {\r
-                       /* Just to help debugging. */\r
-                       ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( portSTACK_TYPE ) );\r
+                       /* Avoid dependency on memset() if it is not required. */\r
+                       #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) )\r
+                       {\r
+                               /* Just to help debugging. */\r
+                               ( void ) memset( pxNewTCB->pxStack, ( int ) tskSTACK_FILL_BYTE, ( size_t ) usStackDepth * sizeof( portSTACK_TYPE ) );\r
+                       }\r
+                       #endif /* ( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) || ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) ) */\r
                }\r
        }\r
 \r
@@ -2682,17 +2691,17 @@ tskTCB *pxNewTCB;
 \r
        static unsigned short prvTaskCheckFreeStackSpace( const unsigned char * pucStackByte )\r
        {\r
-       unsigned short usCount = 0U;\r
+       unsigned long ulCount = 0U;\r
 \r
                while( *pucStackByte == tskSTACK_FILL_BYTE )\r
                {\r
                        pucStackByte -= portSTACK_GROWTH;\r
-                       usCount++;\r
+                       ulCount++;\r
                }\r
 \r
-               usCount /= sizeof( portSTACK_TYPE );\r
+               ulCount /= ( unsigned long ) sizeof( portSTACK_TYPE );\r
 \r
-               return usCount;\r
+               return ( unsigned short ) ulCount;\r
        }\r
 \r
 #endif /* ( ( configUSE_TRACE_FACILITY == 1 ) || ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) ) */\r
@@ -2903,7 +2912,7 @@ tskTCB *pxNewTCB;
        {\r
        xTaskStatusType *pxTaskStatusArray;\r
        volatile unsigned portBASE_TYPE uxArraySize, x;\r
-       char cStatus;\r
+       signed char cStatus;\r
 \r
                /*\r
                 * PLEASE NOTE:\r
@@ -2968,7 +2977,7 @@ tskTCB *pxNewTCB;
                                                                        break;\r
                                }\r
 \r
-                               sprintf( ( char * ) pcWriteBuffer, ( char * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxTaskStatusArray[ x ].pcTaskName, cStatus, ( unsigned int ) pxTaskStatusArray[ x ].uxCurrentPriority, ( unsigned int ) pxTaskStatusArray[ x ].usStackHighWaterMark, ( unsigned int ) pxTaskStatusArray[ x ].xTaskNumber );\r
+                               sprintf( ( char * ) pcWriteBuffer, ( char * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxTaskStatusArray[ x ].pcTaskName, ( char ) cStatus, ( unsigned int ) pxTaskStatusArray[ x ].uxCurrentPriority, ( unsigned int ) pxTaskStatusArray[ x ].usStackHighWaterMark, ( unsigned int ) pxTaskStatusArray[ x ].xTaskNumber );\r
                                pcWriteBuffer += strlen( ( char * ) pcWriteBuffer );\r
                        }\r
 \r
@@ -2977,7 +2986,7 @@ tskTCB *pxNewTCB;
                }\r
        }\r
 \r
-#endif /* configUSE_TRACE_FACILITY */\r
+#endif /* ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) ) */\r
 /*----------------------------------------------------------*/\r
 \r
 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) )\r
@@ -3082,7 +3091,7 @@ tskTCB *pxNewTCB;
                }\r
        }\r
 \r
-#endif /* configGENERATE_RUN_TIME_STATS */\r
+#endif /* ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) ) */\r
 /*-----------------------------------------------------------*/\r
 \r
 portTickType uxTaskResetEventItemValue( void )\r
index eebc99646e38360c3be41bd1b5d8856a39c59ed8..d29c071f4a4c355d641d6628081da324e68907a3 100644 (file)
@@ -102,7 +102,7 @@ typedef struct tmrTimerControl
        const signed char               *pcTimerName;           /*<< Text name.  This is not used by the kernel, it is included simply to make debugging easier. */\r
        xListItem                               xTimerListItem;         /*<< Standard linked list item as used by all kernel features for event management. */\r
        portTickType                    xTimerPeriodInTicks;/*<< How quickly and often the timer expires. */\r
-       unsigned portBASE_TYPE  uxAutoReload;           /*<< Set to pdTRUE if the timer should be automatically restarted once expired.  Set to pdFALSE if the timer is, in effect, a one shot timer. */\r
+       unsigned portBASE_TYPE  uxAutoReload;           /*<< Set to pdTRUE if the timer should be automatically restarted once expired.  Set to pdFALSE if the timer is, in effect, a one-shot timer. */\r
        void                                    *pvTimerID;                     /*<< An ID to identify the timer.  This allows the timer to be identified when the same callback is used for multiple timers. */\r
        tmrTIMER_CALLBACK               pxCallbackFunction;     /*<< The function that will be called when the timer expires. */\r
 } xTIMER;\r
@@ -148,7 +148,7 @@ static variables must be declared volatile. */
 \r
 /* The list in which active timers are stored.  Timers are referenced in expire\r
 time order, with the nearest expiry time at the front of the list.  Only the\r
-timer service task is allowed to access xActiveTimerList. */\r
+timer service task is allowed to access these lists. */\r
 PRIVILEGED_DATA static xList xActiveTimerList1;\r
 PRIVILEGED_DATA static xList xActiveTimerList2;\r
 PRIVILEGED_DATA static xList *pxCurrentTimerList;\r
@@ -242,12 +242,12 @@ portBASE_TYPE xReturn = pdFAIL;
                {\r
                        /* Create the timer task, storing its handle in xTimerTaskHandle so\r
                        it can be returned by the xTimerGetTimerDaemonTaskHandle() function. */\r
-                       xReturn = xTaskCreate( prvTimerTask, ( const signed char * ) "Tmr Svc", ( unsigned short ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( unsigned portBASE_TYPE ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle );\r
+                       xReturn = xTaskCreate( prvTimerTask, ( const signed char * const ) "Tmr Svc", ( unsigned short ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( unsigned portBASE_TYPE ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, &xTimerTaskHandle );\r
                }\r
                #else\r
                {\r
                        /* Create the timer task without storing its handle. */\r
-                       xReturn = xTaskCreate( prvTimerTask, ( const signed char * ) "Tmr Svc", ( unsigned short ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( unsigned portBASE_TYPE ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, NULL);\r
+                       xReturn = xTaskCreate( prvTimerTask, ( const signed char * const ) "Tmr Svc", ( unsigned short ) configTIMER_TASK_STACK_DEPTH, NULL, ( ( unsigned portBASE_TYPE ) configTIMER_TASK_PRIORITY ) | portPRIVILEGE_BIT, NULL);\r
                }\r
                #endif\r
        }\r
@@ -419,7 +419,7 @@ portBASE_TYPE xTimerListsWereSwitched;
                has expired or not.  If obtaining the time causes the lists to switch\r
                then don't process this timer as any timers that remained in the list\r
                when the lists were switched will have been processed within the\r
-               prvSampelTimeNow() function. */\r
+               prvSampleTimeNow() function. */\r
                xTimeNow = prvSampleTimeNow( &xTimerListsWereSwitched );\r
                if( xTimerListsWereSwitched == pdFALSE )\r
                {\r
@@ -717,6 +717,16 @@ static void prvCheckForValidListAndQueue( void )
                        pxCurrentTimerList = &xActiveTimerList1;\r
                        pxOverflowTimerList = &xActiveTimerList2;\r
                        xTimerQueue = xQueueCreate( ( unsigned portBASE_TYPE ) configTIMER_QUEUE_LENGTH, sizeof( xDAEMON_TASK_MESSAGE ) );\r
+                       configASSERT( xTimerQueue );\r
+\r
+                       #if ( configQUEUE_REGISTRY_SIZE > 0 )\r
+                       {\r
+                               if( xTimerQueue != NULL )\r
+                               {\r
+                                       vQueueAddToRegistry( xTimerQueue, ( signed char * ) "TmrQ" );\r
+                               }\r
+                       }\r
+                       #endif /* configQUEUE_REGISTRY_SIZE */\r
                }\r
        }\r
        taskEXIT_CRITICAL();\r