+ Do not attempt to free the stack of a deleted task if the stack was statically allocated.
+ Introduce configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES - which optionally writes known values into the list and list item data structures in order to assist with the detection of memory corruptions.
Microblase port:
+Change occurrences of #if XPAR_MICROBLAZE_0_USE_FPU == 1 to #if XPAR_MICROBLAZE_0_USE_FPU != 0 as the value can also be 2 or 3.
Demo app modifications:
+ Update Zynq project to use the 2014.4 tools and add in tests for the new task notification feature.
+ Update SAM4S project to include tests for the new task notification feature.
#define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */
#define configTICK_RATE_HZ ( 1000 ) /* In this non-real time simulated environment the tick frequency has to be at least a multiple of the Win32 tick frequency, and therefore very slow. */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 50 ) /* In this simulated case, the stack only has to hold one small structure as the real stack is part of the win32 thread. */
listLIST_ITEM_INTEGRITY_CHECK_VALUE_1/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
configLIST_VOLATILETickType_txItemValue;/*< The value being listed. In most cases this is used to sort the list in descending order. */
configLIST_VOLATILETickType_txItemValue;/*< The value being listed. In most cases this is used to sort the list in descending order. */
structxLIST_ITEM*configLIST_VOLATILEpxNext;/*< Pointer to the next ListItem_t in the list. */
structxLIST_ITEM*configLIST_VOLATILEpxNext;/*< Pointer to the next ListItem_t in the list. */
structxLIST_ITEM*configLIST_VOLATILEpxPrevious;/*< Pointer to the previous ListItem_t in the list. */
structxLIST_ITEM*configLIST_VOLATILEpxPrevious;/*< Pointer to the previous ListItem_t in the list. */
void*pvOwner;/*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */
void*pvOwner;/*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */
void*configLIST_VOLATILEpvContainer;/*< Pointer to the list in which this list item is placed (if any). */
void*configLIST_VOLATILEpvContainer;/*< Pointer to the list in which this list item is placed (if any). */
listLIST_ITEM_INTEGRITY_CHECK_VALUE_2/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
};
};
typedefstructxLIST_ITEMListItem_t;/* For some reason lint wants this as two separate definitions. */
typedefstructxLIST_ITEMListItem_t;/* For some reason lint wants this as two separate definitions. */
structxMINI_LIST_ITEM
structxMINI_LIST_ITEM
{
{
listLIST_ITEM_INTEGRITY_CHECK_VALUE_1/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
listLIST_INTEGRITY_CHECK_VALUE_1/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
configLIST_VOLATILEUBaseType_tuxNumberOfItems;
configLIST_VOLATILEUBaseType_tuxNumberOfItems;
ListItem_t*configLIST_VOLATILEpxIndex;/*< Used to walk through the list. Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */
ListItem_t*configLIST_VOLATILEpxIndex;/*< Used to walk through the list. Points to the last item returned by a call to listGET_OWNER_OF_NEXT_ENTRY (). */
MiniListItem_txListEnd;/*< 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. */
MiniListItem_txListEnd;/*< 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. */
listLIST_INTEGRITY_CHECK_VALUE_2/*< Set to a known value if configUSE_LIST_DATA_INTEGRITY_CHECK_BYTES is set to 1. */
pxList->xListEnd.pxPrevious=(ListItem_t*)&(pxList->xListEnd);/*lint !e826 !e740 The mini list structure is used as the list end to save RAM. This is checked and valid. */
pxList->xListEnd.pxPrevious=(ListItem_t*)&(pxList->xListEnd);/*lint !e826 !e740 The mini list structure is used as the list end to save RAM. This is checked and valid. */
xMPU_SETTINGSxMPUSettings;/*< The MPU settings are defined as part of the port layer. THIS MUST BE THE SECOND MEMBER OF THE TCB STRUCT. */
xMPU_SETTINGSxMPUSettings;/*< The MPU settings are defined as part of the port layer. THIS MUST BE THE SECOND MEMBER OF THE TCB STRUCT. */
BaseType_txUsingStaticallyAllocatedStack;/* Set to pdTRUE if the stack is a statically allocated array, and pdFALSE if the stack is dynamically allocated. */
#endif
#endif
ListItem_txGenericListItem;/*< The list that the state list item of a task is reference from denotes the state of that task (Ready, Blocked, Suspended ). */
ListItem_txGenericListItem;/*< The list that the state list item of a task is reference from denotes the state of that task (Ready, Blocked, Suspended ). */