Multiple tidy up, documentation corrections and typo corrections highlighted by Tamas Kleiber's diligent review.

This commit is contained in:
Richard Barry 2013-11-28 10:48:33 +00:00
parent 2e42d7690a
commit 00ad1a0200
107 changed files with 518 additions and 430 deletions

View file

@ -174,7 +174,7 @@ corCRCB *pxCoRoutine;
listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine ); listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine );
/* Event lists are always in priority order. */ /* Event lists are always in priority order. */
listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority ); listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), ( ( portTickType ) configMAX_CO_ROUTINE_PRIORITIES - ( portTickType ) uxPriority ) );
/* Now the co-routine has been initialised it can be added to the ready /* Now the co-routine has been initialised it can be added to the ready
list at the correct priority. */ list at the correct priority. */

View file

@ -103,48 +103,66 @@ typedef portTickType xEventBitsType;
* within FreeRTOSConfig.h. * within FreeRTOSConfig.h.
*/ */
#ifndef configMINIMAL_STACK_SIZE
#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.
#endif
#ifndef configMAX_PRIORITIES
#error Missing definition: configMAX_PRIORITIES must be defined in FreeRTOSConfig.h. See the Configuration section of the FreeRTOS API documentation for details.
#endif
#ifndef configUSE_PREEMPTION #ifndef configUSE_PREEMPTION
#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. #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.
#endif #endif
#ifndef configUSE_IDLE_HOOK #ifndef configUSE_IDLE_HOOK
#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. #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.
#endif #endif
#ifndef configUSE_TICK_HOOK #ifndef configUSE_TICK_HOOK
#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. #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.
#endif #endif
#ifndef configUSE_CO_ROUTINES #ifndef configUSE_CO_ROUTINES
#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. #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.
#endif #endif
#ifndef INCLUDE_vTaskPrioritySet #ifndef INCLUDE_vTaskPrioritySet
#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. #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.
#endif #endif
#ifndef INCLUDE_uxTaskPriorityGet #ifndef INCLUDE_uxTaskPriorityGet
#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. #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.
#endif #endif
#ifndef INCLUDE_vTaskDelete #ifndef INCLUDE_vTaskDelete
#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. #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.
#endif #endif
#ifndef INCLUDE_vTaskSuspend #ifndef INCLUDE_vTaskSuspend
#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. #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.
#endif #endif
#ifndef INCLUDE_vTaskDelayUntil #ifndef INCLUDE_vTaskDelayUntil
#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. #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.
#endif #endif
#ifndef INCLUDE_vTaskDelay #ifndef INCLUDE_vTaskDelay
#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. #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.
#endif #endif
#ifndef configUSE_16_BIT_TICKS #ifndef configUSE_16_BIT_TICKS
#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. #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.
#endif
#if configUSE_CO_ROUTINES != 0
#if configMAX_CO_ROUTINE_PRIORITIES < 1
#error configMAX_CO_ROUTINE_PRIORITIES must be greater than or equal to 1.
#endif
#endif
#if configMAX_PRIORITIES < 1
#error configMAX_PRIORITIES must be greater than or equal to 1.
#endif #endif
#ifndef INCLUDE_xTaskGetIdleTaskHandle #ifndef INCLUDE_xTaskGetIdleTaskHandle
@ -627,6 +645,10 @@ typedef portTickType xEventBitsType;
#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID() #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
#endif #endif
#ifndef configUSE_TRACE_FACILITY
#define configUSE_TRACE_FACILITY 0
#endif
/* For backward compatability. */ /* For backward compatability. */
#define eTaskStateGet eTaskGetState #define eTaskStateGet eTaskGetState

View file

@ -157,7 +157,7 @@ typedef struct xMINI_LIST_ITEM xMiniListItem;
typedef struct xLIST typedef struct xLIST
{ {
configLIST_VOLATILE unsigned portBASE_TYPE uxNumberOfItems; configLIST_VOLATILE unsigned portBASE_TYPE uxNumberOfItems;
xListItem * configLIST_VOLATILE pxIndex; /*< Used to walk through the list. Points to the last item returned by a call to pvListGetOwnerOfNextEntry (). */ 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 (). */
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. */ 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. */
} xList; } xList;
@ -177,7 +177,7 @@ typedef struct xLIST
* \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER
* \ingroup LinkedList * \ingroup LinkedList
*/ */
#define listGET_LIST_ITEM_OWNER( pxListItem ) ( pxListItem )->pvOwner #define listGET_LIST_ITEM_OWNER( pxListItem ) ( ( pxListItem )->pvOwner )
/* /*
* Access macro to set the value of the list item. In most cases the value is * Access macro to set the value of the list item. In most cases the value is
@ -190,7 +190,7 @@ typedef struct xLIST
/* /*
* Access macro to retrieve the value of the list item. The value can * Access macro to retrieve the value of the list item. The value can
* represent anything - for example a the priority of a task, or the time at * represent anything - for example the priority of a task, or the time at
* which a task should be unblocked. * which a task should be unblocked.
* *
* \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE
@ -199,7 +199,7 @@ typedef struct xLIST
#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue ) #define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue )
/* /*
* Access macro the retrieve the value of the list item at the head of a given * Access macro to retrieve the value of the list item at the head of a given
* list. * list.
* *
* \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE
@ -250,7 +250,7 @@ typedef struct xLIST
* *
* The list member pxIndex is used to walk through a list. Calling * The list member pxIndex is used to walk through a list. Calling
* listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list
* and returns that entries pxOwner parameter. Using multiple calls to this * and returns that entry's pxOwner parameter. Using multiple calls to this
* function it is therefore possible to move through every item contained in * function it is therefore possible to move through every item contained in
* a list. * a list.
* *
@ -259,6 +259,7 @@ typedef struct xLIST
* The pxOwner parameter effectively creates a two way link between the list * The pxOwner parameter effectively creates a two way link between the list
* item and its owner. * item and its owner.
* *
* @param pxTCB pxTCB is set to the address of the owner of the next list item.
* @param pxList The list from which the next item owner is to be returned. * @param pxList The list from which the next item owner is to be returned.
* *
* \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY
@ -303,8 +304,7 @@ xList * const pxConstList = ( pxList ); \
* *
* @param pxList The list we want to know if the list item is within. * @param pxList The list we want to know if the list item is within.
* @param pxListItem The list item we want to know if is in the list. * @param pxListItem The list item we want to know if is in the list.
* @return pdTRUE is the list item is in the list, otherwise pdFALSE. * @return pdTRUE if the list item is in the list, otherwise pdFALSE.
* pointer against
*/ */
#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( portBASE_TYPE ) ( ( pxListItem )->pvContainer == ( void * ) ( pxList ) ) ) #define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( portBASE_TYPE ) ( ( pxListItem )->pvContainer == ( void * ) ( pxList ) ) )
@ -352,7 +352,7 @@ void vListInitialiseItem( xListItem * const pxItem );
* *
* @param pxList The list into which the item is to be inserted. * @param pxList The list into which the item is to be inserted.
* *
* @param pxNewListItem The item to that is to be placed in the list. * @param pxNewListItem The item that is to be placed in the list.
* *
* \page vListInsert vListInsert * \page vListInsert vListInsert
* \ingroup LinkedList * \ingroup LinkedList

View file

@ -83,7 +83,6 @@ typedef void (*pdAPPLICATION_CALLBACK_CODE)( void *, unsigned long );
/* Error definitions. */ /* Error definitions. */
#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 ) #define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 )
#define errNO_TASK_TO_RUN ( -2 )
#define errQUEUE_BLOCKED ( -4 ) #define errQUEUE_BLOCKED ( -4 )
#define errQUEUE_YIELD ( -5 ) #define errQUEUE_YIELD ( -5 )

View file

@ -1509,7 +1509,9 @@ portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle pxMutex ) PRIVILEGED_FUNCTI
* handles can also be passed in here. * handles can also be passed in here.
* *
* @param pcName The name to be associated with the handle. This is the * @param pcName The name to be associated with the handle. This is the
* name that the kernel aware debugger will display. * name that the kernel aware debugger will display. The queue registry only
* stores a pointer to the string - so the string must be persistent (global or
* preferably in ROM/Flash), not on the stack.
*/ */
#if configQUEUE_REGISTRY_SIZE > 0 #if configQUEUE_REGISTRY_SIZE > 0
void vQueueAddToRegistry( xQueueHandle xQueue, signed char *pcName ) PRIVILEGED_FUNCTION; void vQueueAddToRegistry( xQueueHandle xQueue, signed char *pcName ) PRIVILEGED_FUNCTION;

View file

@ -828,7 +828,7 @@ typedef xQueueHandle xSemaphoreHandle;
* If xMutex is not a mutex type semaphore, or the mutex is available (not held * If xMutex is not a mutex type semaphore, or the mutex is available (not held
* by a task), return NULL. * by a task), return NULL.
* *
* Note: This Is is a good way of determining if the calling task is the mutex * Note: This is a good way of determining if the calling task is the mutex
* holder, but not a good way of determining the identity of the mutex holder as * holder, but not a good way of determining the identity of the mutex holder as
* the holder may change between the function exiting and the returned value * the holder may change between the function exiting and the returned value
* being tested. * being tested.

View file

@ -127,7 +127,7 @@ typedef struct xMEMORY_REGION
/* /*
* Parameters required to create an MPU protected task. * Parameters required to create an MPU protected task.
*/ */
typedef struct xTASK_PARAMTERS typedef struct xTASK_PARAMETERS
{ {
pdTASK_CODE pvTaskCode; pdTASK_CODE pvTaskCode;
const signed char * const pcName; const signed char * const pcName;
@ -161,7 +161,7 @@ typedef enum
} eSleepModeStatus; } eSleepModeStatus;
/* /**
* Defines the priority used by the idle task. This must not be modified. * Defines the priority used by the idle task. This must not be modified.
* *
* \ingroup TaskUtils * \ingroup TaskUtils
@ -243,7 +243,7 @@ is used in assert() statements. */
*<pre> *<pre>
portBASE_TYPE xTaskCreate( portBASE_TYPE xTaskCreate(
pdTASK_CODE pvTaskCode, pdTASK_CODE pvTaskCode,
const char * const pcName, const signed char * const pcName,
unsigned short usStackDepth, unsigned short usStackDepth,
void *pvParameters, void *pvParameters,
unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxPriority,
@ -261,7 +261,7 @@ is used in assert() statements. */
* must be implemented to never return (i.e. continuous loop). * must be implemented to never return (i.e. continuous loop).
* *
* @param pcName A descriptive name for the task. This is mainly used to * @param pcName A descriptive name for the task. This is mainly used to
* facilitate debugging. Max length defined by tskMAX_TASK_NAME_LEN - default * facilitate debugging. Max length defined by configMAX_TASK_NAME_LEN - default
* is 16. * is 16.
* *
* @param usStackDepth The size of the task stack specified as the number of * @param usStackDepth The size of the task stack specified as the number of
@ -282,7 +282,7 @@ is used in assert() statements. */
* can be referenced. * can be referenced.
* *
* @return pdPASS if the task was successfully created and added to a ready * @return pdPASS if the task was successfully created and added to a ready
* list, otherwise an error code defined in the file errors. h * list, otherwise an error code defined in the file projdefs.h
* *
* Example usage: * Example usage:
<pre> <pre>
@ -299,17 +299,21 @@ is used in assert() statements. */
void vOtherFunction( void ) void vOtherFunction( void )
{ {
static unsigned char ucParameterToPass; static unsigned char ucParameterToPass;
xTaskHandle xHandle; xTaskHandle xHandle = NULL;
// Create the task, storing the handle. Note that the passed parameter ucParameterToPass // Create the task, storing the handle. Note that the passed parameter ucParameterToPass
// must exist for the lifetime of the task, so in this case is declared static. If it was just an // must exist for the lifetime of the task, so in this case is declared static. If it was just an
// an automatic stack variable it might no longer exist, or at least have been corrupted, by the time // an automatic stack variable it might no longer exist, or at least have been corrupted, by the time
// the new task attempts to access it. // the new task attempts to access it.
xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle ); xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
configASSERT( xHandle );
// Use the handle to delete the task. // Use the handle to delete the task.
if( xHandle != NULL )
{
vTaskDelete( xHandle ); vTaskDelete( xHandle );
} }
}
</pre> </pre>
* \defgroup xTaskCreate xTaskCreate * \defgroup xTaskCreate xTaskCreate
* \ingroup Tasks * \ingroup Tasks
@ -337,7 +341,7 @@ is used in assert() statements. */
* can be referenced. * can be referenced.
* *
* @return pdPASS if the task was successfully created and added to a ready * @return pdPASS if the task was successfully created and added to a ready
* list, otherwise an error code defined in the file errors. h * list, otherwise an error code defined in the file projdefs.h
* *
* Example usage: * Example usage:
<pre> <pre>
@ -376,7 +380,7 @@ xTaskHandle xHandle;
vTaskStartScheduler(); vTaskStartScheduler();
// Will only get here if there was insufficient memory to create the idle // Will only get here if there was insufficient memory to create the idle
// task. // and/or timer task.
for( ;; ); for( ;; );
} }
</pre> </pre>
@ -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. * INCLUDE_vTaskDelete must be defined as 1 for this function to be available.
* See the configuration section for more information. * See the configuration section for more information.
* *
* Remove a task from the RTOS real time kernels management. The task being * Remove a task from the RTOS real time kernel's management. The task being
* deleted will be removed from all ready, blocked, suspended and event lists. * deleted will be removed from all ready, blocked, suspended and event lists.
* *
* NOTE: The idle task is responsible for freeing the kernel allocated * NOTE: The idle task is responsible for freeing the kernel allocated
@ -480,7 +484,7 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
/** /**
* task. h * task. h
* <pre>void vTaskDelay( portTickType xTicksToDelay );</pre> * <pre>void vTaskDelay( const portTickType xTicksToDelay );</pre>
* *
* Delay a task for a given number of ticks. The actual time that the * Delay a task for a given number of ticks. The actual time that the
* task remains blocked depends on the tick rate. The constant * task remains blocked depends on the tick rate. The constant
@ -495,7 +499,7 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
* the time at which vTaskDelay() is called. For example, specifying a block * the time at which vTaskDelay() is called. For example, specifying a block
* period of 100 ticks will cause the task to unblock 100 ticks after * period of 100 ticks will cause the task to unblock 100 ticks after
* vTaskDelay() is called. vTaskDelay() does not therefore provide a good method * vTaskDelay() is called. vTaskDelay() does not therefore provide a good method
* of controlling the frequency of a cyclical task as the path taken through the * of controlling the frequency of a periodic task as the path taken through the
* code, as well as other task and interrupt activity, will effect the frequency * code, as well as other task and interrupt activity, will effect the frequency
* at which vTaskDelay() gets called and therefore the time at which the task * at which vTaskDelay() gets called and therefore the time at which the task
* next executes. See vTaskDelayUntil() for an alternative API function designed * next executes. See vTaskDelayUntil() for an alternative API function designed
@ -508,8 +512,6 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
* *
* Example usage: * Example usage:
void vTaskFunction( void * pvParameters )
{
void vTaskFunction( void * pvParameters ) void vTaskFunction( void * pvParameters )
{ {
// Block for 500ms. // Block for 500ms.
@ -526,16 +528,16 @@ void vTaskDelete( xTaskHandle xTaskToDelete ) PRIVILEGED_FUNCTION;
* \defgroup vTaskDelay vTaskDelay * \defgroup vTaskDelay vTaskDelay
* \ingroup TaskCtrl * \ingroup TaskCtrl
*/ */
void vTaskDelay( portTickType xTicksToDelay ) PRIVILEGED_FUNCTION; void vTaskDelay( const portTickType xTicksToDelay ) PRIVILEGED_FUNCTION;
/** /**
* task. h * task. h
* <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );</pre> * <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, const portTickType xTimeIncrement );</pre>
* *
* INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available. * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.
* See the configuration section for more information. * See the configuration section for more information.
* *
* Delay a task until a specified time. This function can be used by cyclical * Delay a task until a specified time. This function can be used by periodic
* tasks to ensure a constant execution frequency. * tasks to ensure a constant execution frequency.
* *
* This function differs from vTaskDelay () in one important aspect: vTaskDelay () will * This function differs from vTaskDelay () in one important aspect: vTaskDelay () will
@ -585,13 +587,13 @@ void vTaskDelay( portTickType xTicksToDelay ) PRIVILEGED_FUNCTION;
* \defgroup vTaskDelayUntil vTaskDelayUntil * \defgroup vTaskDelayUntil vTaskDelayUntil
* \ingroup TaskCtrl * \ingroup TaskCtrl
*/ */
void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement ) PRIVILEGED_FUNCTION; void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, const portTickType xTimeIncrement ) PRIVILEGED_FUNCTION;
/** /**
* task. h * task. h
* <pre>unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle xTask );</pre> * <pre>unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle xTask );</pre>
* *
* INCLUDE_xTaskPriorityGet must be defined as 1 for this function to be available. * INCLUDE_uxTaskPriorityGet must be defined as 1 for this function to be available.
* See the configuration section for more information. * See the configuration section for more information.
* *
* Obtain the priority of any task. * Obtain the priority of any task.
@ -754,7 +756,7 @@ void vTaskSuspend( xTaskHandle xTaskToSuspend ) PRIVILEGED_FUNCTION;
* *
* Resumes a suspended task. * Resumes a suspended task.
* *
* A task that has been suspended by one of more calls to vTaskSuspend () * A task that has been suspended by one or more calls to vTaskSuspend ()
* will be made available for running again by a single call to * will be made available for running again by a single call to
* vTaskResume (). * vTaskResume ().
* *
@ -786,7 +788,7 @@ void vTaskSuspend( xTaskHandle xTaskToSuspend ) PRIVILEGED_FUNCTION;
vTaskResume( xHandle ); vTaskResume( xHandle );
// The created task will once again get microcontroller processing // The created task will once again get microcontroller processing
// time in accordance with it priority within the system. // time in accordance with its priority within the system.
} }
</pre> </pre>
* \defgroup vTaskResume vTaskResume * \defgroup vTaskResume vTaskResume
@ -803,12 +805,21 @@ void vTaskResume( xTaskHandle xTaskToResume ) PRIVILEGED_FUNCTION;
* *
* An implementation of vTaskResume() that can be called from within an ISR. * An implementation of vTaskResume() that can be called from within an ISR.
* *
* A task that has been suspended by one of more calls to vTaskSuspend () * A task that has been suspended by one or more calls to vTaskSuspend ()
* will be made available for running again by a single call to * will be made available for running again by a single call to
* xTaskResumeFromISR (). * xTaskResumeFromISR ().
* *
* xTaskResumeFromISR() should not be used to synchronise a task with an
* interrupt if there is a chance that the interrupt could arrive prior to the
* task being suspended - as this can lead to interrupts being missed. Use of a
* semaphore as a synchronisation mechanism would avoid this eventuality.
*
* @param xTaskToResume Handle to the task being readied. * @param xTaskToResume Handle to the task being readied.
* *
* @return pdTRUE if resuming the task should result in a context switch,
* otherwise pdFALSE. This is used by the ISR to determine if a context switch
* may be required following the ISR.
*
* \defgroup vTaskResumeFromISR vTaskResumeFromISR * \defgroup vTaskResumeFromISR vTaskResumeFromISR
* \ingroup TaskCtrl * \ingroup TaskCtrl
*/ */
@ -823,12 +834,7 @@ portBASE_TYPE xTaskResumeFromISR( xTaskHandle xTaskToResume ) PRIVILEGED_FUNCTIO
* <pre>void vTaskStartScheduler( void );</pre> * <pre>void vTaskStartScheduler( void );</pre>
* *
* Starts the real time kernel tick processing. After calling the kernel * Starts the real time kernel tick processing. After calling the kernel
* has control over which tasks are executed and when. This function * has control over which tasks are executed and when.
* does not return until an executing task calls vTaskEndScheduler ().
*
* At least one task should be created via a call to xTaskCreate ()
* before calling vTaskStartScheduler (). The idle task is created
* automatically when the first application task is created.
* *
* See the demo application file main.c for an example of creating * See the demo application file main.c for an example of creating
* tasks and starting the kernel. * tasks and starting the kernel.
@ -856,6 +862,9 @@ void vTaskStartScheduler( void ) PRIVILEGED_FUNCTION;
* task. h * task. h
* <pre>void vTaskEndScheduler( void );</pre> * <pre>void vTaskEndScheduler( void );</pre>
* *
* NOTE: At the time of writing only the x86 real mode port, which runs on a PC
* in place of DOS, implements this function.
*
* Stops the real time kernel tick. All created tasks will be automatically * Stops the real time kernel tick. All created tasks will be automatically
* deleted and multitasking (either preemptive or cooperative) will * deleted and multitasking (either preemptive or cooperative) will
* stop. Execution then resumes from the point where vTaskStartScheduler () * stop. Execution then resumes from the point where vTaskStartScheduler ()
@ -909,8 +918,8 @@ void vTaskEndScheduler( void ) PRIVILEGED_FUNCTION;
* task. h * task. h
* <pre>void vTaskSuspendAll( void );</pre> * <pre>void vTaskSuspendAll( void );</pre>
* *
* Suspends all real time kernel activity while keeping interrupts (including the * Suspends the scheduler without disabling interrupts. Context switches will
* kernel tick) enabled. * not occur while the scheduler is suspended.
* *
* After calling vTaskSuspendAll () the calling task will continue to execute * After calling vTaskSuspendAll () the calling task will continue to execute
* without risk of being swapped out until a call to xTaskResumeAll () has been * without risk of being swapped out until a call to xTaskResumeAll () has been
@ -960,9 +969,11 @@ void vTaskSuspendAll( void ) PRIVILEGED_FUNCTION;
* task. h * task. h
* <pre>char xTaskResumeAll( void );</pre> * <pre>char xTaskResumeAll( void );</pre>
* *
* Resumes real time kernel activity following a call to vTaskSuspendAll (). * Resumes scheduler activity after it was suspended by a call to
* After a call to vTaskSuspendAll () the kernel will take control of which * vTaskSuspendAll().
* task is executing at any time. *
* xTaskResumeAll() only resumes the scheduler. It does not unsuspend tasks
* that were previously suspended by a call to vTaskSuspend().
* *
* @return If resuming the scheduler caused a context switch then pdTRUE is * @return If resuming the scheduler caused a context switch then pdTRUE is
* returned, otherwise pdFALSE is returned. * returned, otherwise pdFALSE is returned.
@ -1017,7 +1028,7 @@ signed portBASE_TYPE xTaskResumeAll( void ) PRIVILEGED_FUNCTION;
* is in any other state. * is in any other state.
* *
*/ */
signed portBASE_TYPE xTaskIsTaskSuspended( xTaskHandle xTask ) PRIVILEGED_FUNCTION; signed portBASE_TYPE xTaskIsTaskSuspended( const xTaskHandle xTask ) PRIVILEGED_FUNCTION;
/*----------------------------------------------------------- /*-----------------------------------------------------------
* TASK UTILITIES * TASK UTILITIES
@ -1045,7 +1056,7 @@ portTickType xTaskGetTickCount( void ) PRIVILEGED_FUNCTION;
* microcontroller being used or interrupt nesting is either not supported or * microcontroller being used or interrupt nesting is either not supported or
* not being used. * not being used.
* *
* \defgroup xTaskGetTickCount xTaskGetTickCount * \defgroup xTaskGetTickCountFromISR xTaskGetTickCountFromISR
* \ingroup TaskUtils * \ingroup TaskUtils
*/ */
portTickType xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION; portTickType xTaskGetTickCountFromISR( void ) PRIVILEGED_FUNCTION;
@ -1069,7 +1080,7 @@ unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void ) PRIVILEGED_FUNCTION;
* <PRE>signed char *pcTaskGetTaskName( xTaskHandle xTaskToQuery );</PRE> * <PRE>signed char *pcTaskGetTaskName( xTaskHandle xTaskToQuery );</PRE>
* *
* @return The text (human readable) name of the task referenced by the handle * @return The text (human readable) name of the task referenced by the handle
* xTaskToQueury. A task can query its own name by either passing in its own * xTaskToQuery. A task can query its own name by either passing in its own
* handle, or by setting xTaskToQuery to NULL. INCLUDE_pcTaskGetTaskName must be * handle, or by setting xTaskToQuery to NULL. INCLUDE_pcTaskGetTaskName must be
* set to 1 in FreeRTOSConfig.h for pcTaskGetTaskName() to be available. * set to 1 in FreeRTOSConfig.h for pcTaskGetTaskName() to be available.
* *
@ -1093,12 +1104,13 @@ signed char *pcTaskGetTaskName( xTaskHandle xTaskToQuery );
* @param xTask Handle of the task associated with the stack to be checked. * @param xTask Handle of the task associated with the stack to be checked.
* Set xTask to NULL to check the stack of the calling task. * Set xTask to NULL to check the stack of the calling task.
* *
* @return The smallest amount of free stack space there has been (in bytes) * @return The smallest amount of free stack space there has been (in words, so
* since the task referenced by xTask was created. * actual spaces on the stack rather than bytes) since the task referenced by
* xTask was created.
*/ */
unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) PRIVILEGED_FUNCTION; unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask ) PRIVILEGED_FUNCTION;
/* When using trace macros it is sometimes necessary to include tasks.h before /* When using trace macros it is sometimes necessary to include task.h before
FreeRTOS.h. When this is done pdTASK_HOOK_CODE will not yet have been defined, FreeRTOS.h. When this is done pdTASK_HOOK_CODE will not yet have been defined,
so the following two prototypes will cause a compilation error. This can be so the following two prototypes will cause a compilation error. This can be
fixed by simply guarding against the inclusion of these two prototypes unless fixed by simply guarding against the inclusion of these two prototypes unless
@ -1128,13 +1140,14 @@ constant. */
/** /**
* task.h * task.h
* <pre>portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, pdTASK_HOOK_CODE pxHookFunction );</pre> * <pre>portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter );</pre>
* *
* Calls the hook function associated with xTask. Passing xTask as NULL has * Calls the hook function associated with xTask. Passing xTask as NULL has
* the effect of calling the Running tasks (the calling task) hook function. * the effect of calling the Running tasks (the calling task) hook function.
* *
* pvParameter is passed to the hook function for the task to interpret as it * pvParameter is passed to the hook function for the task to interpret as it
* wants. * wants. The return value is the value returned by the task hook function
* registered by the user.
*/ */
portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter ) PRIVILEGED_FUNCTION; portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter ) PRIVILEGED_FUNCTION;
@ -1148,7 +1161,7 @@ portBASE_TYPE xTaskCallApplicationTaskHook( xTaskHandle xTask, void *pvParameter
xTaskHandle xTaskGetIdleTaskHandle( void ); xTaskHandle xTaskGetIdleTaskHandle( void );
/** /**
* configUSE_TRACE_FACILITY must bet defined as 1 in FreeRTOSConfig.h for * configUSE_TRACE_FACILITY must be defined as 1 in FreeRTOSConfig.h for
* uxTaskGetSystemState() to be available. * uxTaskGetSystemState() to be available.
* *
* uxTaskGetSystemState() populates an xTaskStatusType structure for each task in * uxTaskGetSystemState() populates an xTaskStatusType structure for each task in
@ -1197,11 +1210,11 @@ xTaskHandle xTaskGetIdleTaskHandle( void );
// Take a snapshot of the number of tasks in case it changes while this // Take a snapshot of the number of tasks in case it changes while this
// function is executing. // function is executing.
uxArraySize = uxCurrentNumberOfTasks(); uxArraySize = uxTaskGetNumberOfTasks();
// Allocate a xTaskStatusType structure for each task. An array could be // Allocate a xTaskStatusType structure for each task. An array could be
// allocated statically at compile time. // allocated statically at compile time.
pxTaskStatusArray = pvPortMalloc( uxCurrentNumberOfTasks * sizeof( xTaskStatusType ) ); pxTaskStatusArray = pvPortMalloc( uxArraySize * sizeof( xTaskStatusType ) );
if( pxTaskStatusArray != NULL ) if( pxTaskStatusArray != NULL )
{ {
@ -1284,7 +1297,7 @@ unsigned portBASE_TYPE uxTaskGetSystemState( xTaskStatusType *pxTaskStatusArray,
* call to vTaskList(). * call to vTaskList().
* *
* @param pcWriteBuffer A buffer into which the above mentioned details * @param pcWriteBuffer A buffer into which the above mentioned details
* will be written, in ascii form. This buffer is assumed to be large * will be written, in ASCII form. This buffer is assumed to be large
* enough to contain the generated report. Approximately 40 bytes per * enough to contain the generated report. Approximately 40 bytes per
* task should be sufficient. * task should be sufficient.
* *
@ -1300,7 +1313,7 @@ void vTaskList( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;
* configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS * configGENERATE_RUN_TIME_STATS and configUSE_STATS_FORMATTING_FUNCTIONS
* must both be defined as 1 for this function to be available. The application * must both be defined as 1 for this function to be available. The application
* must also then provide definitions for * must also then provide definitions for
* portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE * portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() and portGET_RUN_TIME_COUNTER_VALUE()
* to configure a peripheral timer/counter and return the timers current count * to configure a peripheral timer/counter and return the timers current count
* value respectively. The counter should be at least 10 times the frequency of * value respectively. The counter should be at least 10 times the frequency of
* the tick count. * the tick count.
@ -1338,7 +1351,7 @@ void vTaskList( signed char *pcWriteBuffer ) PRIVILEGED_FUNCTION;
* vTaskGetRunTimeStats(). * vTaskGetRunTimeStats().
* *
* @param pcWriteBuffer A buffer into which the execution times will be * @param pcWriteBuffer A buffer into which the execution times will be
* written, in ascii form. This buffer is assumed to be large enough to * written, in ASCII form. This buffer is assumed to be large enough to
* contain the generated report. Approximately 40 bytes per task should * contain the generated report. Approximately 40 bytes per task should
* be sufficient. * be sufficient.
* *
@ -1412,8 +1425,6 @@ void vTaskPlaceOnUnorderedEventList( xList * pxEventList, portTickType xItemValu
* The difference being that this function does not permit tasks to block * The difference being that this function does not permit tasks to block
* indefinitely, whereas vTaskPlaceOnEventList() does. * indefinitely, whereas vTaskPlaceOnEventList() does.
* *
* @return pdTRUE if the task being removed has a higher priority than the task
* making the call, otherwise pdFALSE.
*/ */
void vTaskPlaceOnEventListRestricted( xList * const pxEventList, portTickType xTicksToWait ) PRIVILEGED_FUNCTION; void vTaskPlaceOnEventListRestricted( xList * const pxEventList, portTickType xTicksToWait ) PRIVILEGED_FUNCTION;
@ -1512,21 +1523,23 @@ signed portBASE_TYPE xTaskGenericCreate( pdTASK_CODE pxTaskCode, const signed ch
unsigned portBASE_TYPE uxTaskGetTaskNumber( xTaskHandle xTask ) PRIVILEGED_FUNCTION; unsigned portBASE_TYPE uxTaskGetTaskNumber( xTaskHandle xTask ) PRIVILEGED_FUNCTION;
/* /*
* Set the uxTCBNumber of the task referenced by the xTask parameter to * Set the uxTaskNumber of the task referenced by the xTask parameter to
* ucHandle. * uxHandle.
*/ */
void vTaskSetTaskNumber( xTaskHandle xTask, unsigned portBASE_TYPE uxHandle ) PRIVILEGED_FUNCTION; void vTaskSetTaskNumber( xTaskHandle xTask, unsigned portBASE_TYPE uxHandle ) PRIVILEGED_FUNCTION;
/* /*
* Only available when configUSE_TICKLESS_IDLE is set to 1.
* If tickless mode is being used, or a low power mode is implemented, then * If tickless mode is being used, or a low power mode is implemented, then
* the tick interrupt will not execute during idle periods. When this is the * the tick interrupt will not execute during idle periods. When this is the
* case, the tick count value maintained by the scheduler needs to be kept up * case, the tick count value maintained by the scheduler needs to be kept up
* to date with the actual execution time by being skipped forward by the by * to date with the actual execution time by being skipped forward by a time
* a time equal to the idle period. * equal to the idle period.
*/ */
void vTaskStepTick( portTickType xTicksToJump ) PRIVILEGED_FUNCTION; void vTaskStepTick( portTickType xTicksToJump ) PRIVILEGED_FUNCTION;
/* /*
* Only avilable when configUSE_TICKLESS_IDLE is set to 1.
* Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port * Provided for use within portSUPPRESS_TICKS_AND_SLEEP() to allow the port
* specific sleep function to determine if it is ok to proceed with the sleep, * specific sleep function to determine if it is ok to proceed with the sleep,
* and if it is ok to proceed, if it is ok to sleep indefinitely. * and if it is ok to proceed, if it is ok to sleep indefinitely.

View file

@ -80,6 +80,10 @@ happens to also be including task.h. */
extern "C" { extern "C" {
#endif #endif
/*-----------------------------------------------------------
* MACROS AND DEFINITIONS
*----------------------------------------------------------*/
/* IDs for commands that can be sent/received on the timer queue. These are to /* IDs for commands that can be sent/received on the timer queue. These are to
be used solely through the macros that make up the public software timer API, be used solely through the macros that make up the public software timer API,
as defined below. */ as defined below. */
@ -89,11 +93,7 @@ as defined below. */
#define tmrCOMMAND_CHANGE_PERIOD ( ( portBASE_TYPE ) 2 ) #define tmrCOMMAND_CHANGE_PERIOD ( ( portBASE_TYPE ) 2 )
#define tmrCOMMAND_DELETE ( ( portBASE_TYPE ) 3 ) #define tmrCOMMAND_DELETE ( ( portBASE_TYPE ) 3 )
/*----------------------------------------------------------- /**
* MACROS AND DEFINITIONS
*----------------------------------------------------------*/
/**
* Type by which software timers are referenced. For example, a call to * Type by which software timers are referenced. For example, a call to
* xTimerCreate() returns an xTimerHandle variable that can then be used to * xTimerCreate() returns an xTimerHandle variable that can then be used to
* reference the subject timer in calls to other software timer API functions * reference the subject timer in calls to other software timer API functions
@ -105,7 +105,7 @@ typedef void * xTimerHandle;
typedef void (*tmrTIMER_CALLBACK)( xTimerHandle xTimer ); typedef void (*tmrTIMER_CALLBACK)( xTimerHandle xTimer );
/** /**
* xTimerHandle xTimerCreate( const signed char *pcTimerName, * xTimerHandle xTimerCreate( const signed char * const pcTimerName,
* portTickType xTimerPeriodInTicks, * portTickType xTimerPeriodInTicks,
* unsigned portBASE_TYPE uxAutoReload, * unsigned portBASE_TYPE uxAutoReload,
* void * pvTimerID, * void * pvTimerID,
@ -145,10 +145,10 @@ typedef void (*tmrTIMER_CALLBACK)( xTimerHandle xTimer );
* Callback functions must have the prototype defined by tmrTIMER_CALLBACK, * Callback functions must have the prototype defined by tmrTIMER_CALLBACK,
* which is "void vCallbackFunction( xTimerHandle xTimer );". * which is "void vCallbackFunction( xTimerHandle xTimer );".
* *
* @return If the timer is successfully create then a handle to the newly * @return If the timer is successfully created then a handle to the newly
* created timer is returned. If the timer cannot be created (because either * created timer is returned. If the timer cannot be created (because either
* there is insufficient FreeRTOS heap remaining to allocate the timer * there is insufficient FreeRTOS heap remaining to allocate the timer
* structures, or the timer period was set to 0) then 0 is returned. * structures, or the timer period was set to 0) then NULL is returned.
* *
* Example usage: * Example usage:
* @verbatim * @verbatim
@ -263,7 +263,7 @@ void *pvTimerGetTimerID( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;
* *
* A timer will be dormant if: * A timer will be dormant if:
* 1) It has been created but not started, or * 1) It has been created but not started, or
* 2) It is an expired on-shot timer that has not been restarted. * 2) It is an expired one-shot timer that has not been restarted.
* *
* Timers are created in the dormant state. The xTimerStart(), xTimerReset(), * Timers are created in the dormant state. The xTimerStart(), xTimerReset(),
* xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and * xTimerStartFromISR(), xTimerResetFromISR(), xTimerChangePeriod() and
@ -294,6 +294,8 @@ void *pvTimerGetTimerID( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;
portBASE_TYPE xTimerIsTimerActive( xTimerHandle xTimer ) PRIVILEGED_FUNCTION; portBASE_TYPE xTimerIsTimerActive( xTimerHandle xTimer ) PRIVILEGED_FUNCTION;
/** /**
* xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
*
* xTimerGetTimerDaemonTaskHandle() is only available if * xTimerGetTimerDaemonTaskHandle() is only available if
* INCLUDE_xTimerGetTimerDaemonTaskHandle is set to 1 in FreeRTOSConfig.h. * INCLUDE_xTimerGetTimerDaemonTaskHandle is set to 1 in FreeRTOSConfig.h.
* *
@ -307,7 +309,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* *
* Timer functionality is provided by a timer service/daemon task. Many of the * Timer functionality is provided by a timer service/daemon task. Many of the
* public FreeRTOS timer API functions send commands to the timer service task * public FreeRTOS timer API functions send commands to the timer service task
* though a queue called the timer command queue. The timer command queue is * through a queue called the timer command queue. The timer command queue is
* private to the kernel itself and is not directly accessible to application * private to the kernel itself and is not directly accessible to application
* code. The length of the timer command queue is set by the * code. The length of the timer command queue is set by the
* configTIMER_QUEUE_LENGTH configuration constant. * configTIMER_QUEUE_LENGTH configuration constant.
@ -359,7 +361,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* *
* Timer functionality is provided by a timer service/daemon task. Many of the * Timer functionality is provided by a timer service/daemon task. Many of the
* public FreeRTOS timer API functions send commands to the timer service task * public FreeRTOS timer API functions send commands to the timer service task
* though a queue called the timer command queue. The timer command queue is * through a queue called the timer command queue. The timer command queue is
* private to the kernel itself and is not directly accessible to application * private to the kernel itself and is not directly accessible to application
* code. The length of the timer command queue is set by the * code. The length of the timer command queue is set by the
* configTIMER_QUEUE_LENGTH configuration constant. * configTIMER_QUEUE_LENGTH configuration constant.
@ -403,7 +405,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* *
* Timer functionality is provided by a timer service/daemon task. Many of the * Timer functionality is provided by a timer service/daemon task. Many of the
* public FreeRTOS timer API functions send commands to the timer service task * public FreeRTOS timer API functions send commands to the timer service task
* though a queue called the timer command queue. The timer command queue is * through a queue called the timer command queue. The timer command queue is
* private to the kernel itself and is not directly accessible to application * private to the kernel itself and is not directly accessible to application
* code. The length of the timer command queue is set by the * code. The length of the timer command queue is set by the
* configTIMER_QUEUE_LENGTH configuration constant. * configTIMER_QUEUE_LENGTH configuration constant.
@ -481,7 +483,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* *
* Timer functionality is provided by a timer service/daemon task. Many of the * Timer functionality is provided by a timer service/daemon task. Many of the
* public FreeRTOS timer API functions send commands to the timer service task * public FreeRTOS timer API functions send commands to the timer service task
* though a queue called the timer command queue. The timer command queue is * through a queue called the timer command queue. The timer command queue is
* private to the kernel itself and is not directly accessible to application * private to the kernel itself and is not directly accessible to application
* code. The length of the timer command queue is set by the * code. The length of the timer command queue is set by the
* configTIMER_QUEUE_LENGTH configuration constant. * configTIMER_QUEUE_LENGTH configuration constant.
@ -519,7 +521,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* *
* Timer functionality is provided by a timer service/daemon task. Many of the * Timer functionality is provided by a timer service/daemon task. Many of the
* public FreeRTOS timer API functions send commands to the timer service task * public FreeRTOS timer API functions send commands to the timer service task
* though a queue called the timer command queue. The timer command queue is * through a queue called the timer command queue. The timer command queue is
* private to the kernel itself and is not directly accessible to application * private to the kernel itself and is not directly accessible to application
* code. The length of the timer command queue is set by the * code. The length of the timer command queue is set by the
* configTIMER_QUEUE_LENGTH configuration constant. * configTIMER_QUEUE_LENGTH configuration constant.
@ -716,7 +718,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* if( xHigherPriorityTaskWoken != pdFALSE ) * if( xHigherPriorityTaskWoken != pdFALSE )
* { * {
* // Call the interrupt safe yield function here (actual function * // Call the interrupt safe yield function here (actual function
* // depends on the FreeRTOS port being used. * // depends on the FreeRTOS port being used).
* } * }
* } * }
* @endverbatim * @endverbatim
@ -779,7 +781,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* if( xHigherPriorityTaskWoken != pdFALSE ) * if( xHigherPriorityTaskWoken != pdFALSE )
* { * {
* // Call the interrupt safe yield function here (actual function * // Call the interrupt safe yield function here (actual function
* // depends on the FreeRTOS port being used. * // depends on the FreeRTOS port being used).
* } * }
* } * }
* @endverbatim * @endverbatim
@ -852,7 +854,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* if( xHigherPriorityTaskWoken != pdFALSE ) * if( xHigherPriorityTaskWoken != pdFALSE )
* { * {
* // Call the interrupt safe yield function here (actual function * // Call the interrupt safe yield function here (actual function
* // depends on the FreeRTOS port being used. * // depends on the FreeRTOS port being used).
* } * }
* } * }
* @endverbatim * @endverbatim
@ -938,7 +940,7 @@ xTaskHandle xTimerGetTimerDaemonTaskHandle( void );
* if( xHigherPriorityTaskWoken != pdFALSE ) * if( xHigherPriorityTaskWoken != pdFALSE )
* { * {
* // Call the interrupt safe yield function here (actual function * // Call the interrupt safe yield function here (actual function
* // depends on the FreeRTOS port being used. * // depends on the FreeRTOS port being used).
* } * }
* } * }
* @endverbatim * @endverbatim

View file

@ -101,13 +101,11 @@ void vListInitialiseItem( xListItem * const pxItem )
void vListInsertEnd( xList * const pxList, xListItem * const pxNewListItem ) void vListInsertEnd( xList * const pxList, xListItem * const pxNewListItem )
{ {
xListItem * pxIndex; xListItem * const pxIndex = pxList->pxIndex;
/* Insert a new list item into pxList, but rather than sort the list, /* Insert a new list item into pxList, but rather than sort the list,
makes the new list item the last item to be removed by a call to makes the new list item the last item to be removed by a call to
pvListGetOwnerOfNextEntry. */ listGET_OWNER_OF_NEXT_ENTRY(). */
pxIndex = pxList->pxIndex;
pxNewListItem->pxNext = pxIndex; pxNewListItem->pxNext = pxIndex;
pxNewListItem->pxPrevious = pxIndex->pxPrevious; pxNewListItem->pxPrevious = pxIndex->pxPrevious;
pxIndex->pxPrevious->pxNext = pxNewListItem; pxIndex->pxPrevious->pxNext = pxNewListItem;
@ -123,14 +121,13 @@ xListItem * pxIndex;
void vListInsert( xList * const pxList, xListItem * const pxNewListItem ) void vListInsert( xList * const pxList, xListItem * const pxNewListItem )
{ {
xListItem *pxIterator; xListItem *pxIterator;
portTickType xValueOfInsertion; const portTickType xValueOfInsertion = pxNewListItem->xItemValue;
/* Insert the new list item into the list, sorted in ulListItem order. */ /* Insert the new list item into the list, sorted in xItemValue order.
xValueOfInsertion = pxNewListItem->xItemValue;
/* If the list already contains a list item with the same item value then If the list already contains a list item with the same item value then
the new list item should be placed after it. This ensures that TCB's which the new list item should be placed after it. This ensures that TCB's which
are stored in ready lists (all of which have the same ulListItem value) are stored in ready lists (all of which have the same xItemValue value)
get an equal share of the CPU. However, if the xItemValue is the same as get an equal share of the CPU. However, if the xItemValue is the same as
the back marker the iteration loop below will not end. This means we need the back marker the iteration loop below will not end. This means we need
to guard against this by checking the value first and modifying the to guard against this by checking the value first and modifying the
@ -180,15 +177,13 @@ portTickType xValueOfInsertion;
unsigned portBASE_TYPE uxListRemove( xListItem * const pxItemToRemove ) unsigned portBASE_TYPE uxListRemove( xListItem * const pxItemToRemove )
{ {
xList * pxList; /* The list item knows which list it is in. Obtain the list from the list
item. */
xList * const pxList = ( xList * ) pxItemToRemove->pvContainer;
pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;
pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;
/* The list item knows which list it is in. Obtain the list from the list
item. */
pxList = ( xList * ) pxItemToRemove->pvContainer;
/* Make sure the index is left pointing to a valid item. */ /* Make sure the index is left pointing to a valid item. */
if( pxList->pxIndex == pxItemToRemove ) if( pxList->pxIndex == pxItemToRemove )
{ {

View file

@ -90,7 +90,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -90,7 +90,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -258,8 +258,9 @@ portBASE_TYPE xPortStartScheduler(void)
*/ */
void vPortEndScheduler(void) void vPortEndScheduler(void)
{ {
/* It is unlikely that the port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( ulCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -99,7 +99,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -91,7 +91,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -117,7 +117,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -117,7 +117,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -117,7 +117,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -222,8 +222,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM0 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -250,6 +251,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -370,8 +370,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM3 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -390,6 +391,7 @@ void vPortExitCritical( void )
{ {
portBASE_TYPE xRunningPrivileged = prvRaisePrivilege(); portBASE_TYPE xRunningPrivileged = prvRaisePrivilege();
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -101,7 +101,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -119,7 +119,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -72,7 +72,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/* ------------------------ Architecture specifics ------------------------ */ /* ------------------------ Architecture specifics ------------------------ */

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -294,7 +294,9 @@ extern unsigned long _stack[];
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -98,7 +98,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -299,7 +299,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -216,7 +216,9 @@ extern void vApplicationSetupTimerInterrupt( void );
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -98,7 +98,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -297,8 +297,9 @@ unsigned long ulAPSR;
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the ARM port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( ulCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@
#define portSTACK_TYPE unsigned long #define portSTACK_TYPE unsigned long
#define portBASE_TYPE portLONG #define portBASE_TYPE portLONG
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -182,8 +182,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM0 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -210,6 +211,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -295,8 +295,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM3 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -323,6 +324,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -321,8 +321,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM4F port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -349,6 +350,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -102,7 +102,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -120,7 +120,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -90,7 +90,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -99,7 +99,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -110,7 +110,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -317,7 +317,9 @@ __interrupt static void prvTickISR( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -101,7 +101,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -221,7 +221,9 @@ __interrupt void vTickISR( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -98,7 +98,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -98,7 +98,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -90,7 +90,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -300,9 +300,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the scheduler for the PIC port will get stopped /* Not implemented in ports where there is nothing to return to.
once running. If required disable the tick interrupt here, then return Artificially force an assert. */
to xPortStartScheduler(). */ configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -346,6 +346,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -270,10 +270,9 @@ const unsigned long ulCompareMatch = ( (configPERIPHERAL_CLOCK_HZ / portTIMER_PR
void vPortEndScheduler(void) void vPortEndScheduler(void)
{ {
/* It is unlikely that the scheduler for the PIC port will get stopped /* Not implemented in ports where there is nothing to return to.
once running. If required disable the tick interrupt here, then return Artificially force an assert. */
to xPortStartScheduler(). */ configASSERT( uxInterruptNesting == 1000UL );
for( ;; );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -279,10 +279,9 @@ const unsigned long ulCompareMatch = ( (configPERIPHERAL_CLOCK_HZ / portTIMER_PR
void vPortEndScheduler(void) void vPortEndScheduler(void)
{ {
/* It is unlikely that the scheduler for the PIC port will get stopped /* Not implemented in ports where there is nothing to return to.
once running. If required disable the tick interrupt here, then return Artificially force an assert. */
to xPortStartScheduler(). */ configASSERT( uxInterruptNesting == 1000UL );
for( ;; );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -97,7 +97,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -85,7 +85,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/* Hardware specifics. */ /* Hardware specifics. */

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@ typedef void ( __interrupt __far *pxISR )();
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -336,8 +336,9 @@ unsigned long ulAPSR;
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the ARM port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( ulCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -94,7 +94,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned long portTickType; typedef unsigned long portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -212,8 +212,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM0 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -240,6 +241,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -338,8 +338,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM3 port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -366,6 +367,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -382,8 +382,9 @@ portBASE_TYPE xPortStartScheduler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* It is unlikely that the CM4F port will require this function as there /* Not implemented in ports where there is nothing to return to.
is nothing to return to. */ Artificially force an assert. */
configASSERT( uxCriticalNesting == 1000UL );
} }
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/
@ -410,6 +411,7 @@ void vPortEnterCritical( void )
void vPortExitCritical( void ) void vPortExitCritical( void )
{ {
configASSERT( uxCriticalNesting );
uxCriticalNesting--; uxCriticalNesting--;
if( uxCriticalNesting == 0 ) if( uxCriticalNesting == 0 )
{ {

View file

@ -95,7 +95,7 @@ extern "C" {
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -444,7 +444,9 @@ static void prvYieldHandler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
/* The following line is just to prevent the symbol getting optimised away. */ /* The following line is just to prevent the symbol getting optimised away. */
( void ) vTaskSwitchContext(); ( void ) vTaskSwitchContext();

View file

@ -99,7 +99,7 @@ than portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -349,7 +349,9 @@ static void prvYieldHandler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
/* The following line is just to prevent the symbol getting optimised away. */ /* The following line is just to prevent the symbol getting optimised away. */
( void ) vTaskSwitchContext(); ( void ) vTaskSwitchContext();

View file

@ -99,7 +99,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -354,7 +354,9 @@ static void prvYieldHandler( void )
void vPortEndScheduler( void ) void vPortEndScheduler( void )
{ {
/* Not implemented as there is nothing to return to. */ /* Not implemented in ports where there is nothing to return to.
Artificially force an assert. */
configASSERT( pxCurrentTCB == NULL );
/* The following line is just to prevent the symbol getting optimised away. */ /* The following line is just to prevent the symbol getting optimised away. */
( void ) vTaskSwitchContext(); ( void ) vTaskSwitchContext();

View file

@ -99,7 +99,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -98,7 +98,7 @@ portSTACK_TYPE and portBASE_TYPE. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -90,7 +90,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -99,7 +99,7 @@ void vSerialISR( void ) interrupt 4;
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -96,7 +96,7 @@
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

View file

@ -102,7 +102,7 @@ FreeRTOSConfig.h to set the configMEMMODEL value. */
#define portMAX_DELAY ( portTickType ) 0xffff #define portMAX_DELAY ( portTickType ) 0xffff
#else #else
typedef unsigned portLONG portTickType; typedef unsigned portLONG portTickType;
#define portMAX_DELAY ( portTickType ) 0xffffffff #define portMAX_DELAY ( portTickType ) 0xffffffffUL
#endif #endif
/*-----------------------------------------------------------*/ /*-----------------------------------------------------------*/

Some files were not shown because too many files have changed in this diff Show more