mirror of
https://github.com/eclipse-threadx/threadx.git
synced 2026-10-06 06:59:08 +08:00
Merge pull request #468 from eclipse-threadx/dev
cortex_m / Cortex M0 build (push) Has been cancelled
cortex_m / Cortex M3 build (push) Has been cancelled
cortex_m / Cortex M4 build (push) Has been cancelled
cortex_m / Cortex M7 build (push) Has been cancelled
regression_test / tx (push) Has been cancelled
regression_test / smp (push) Has been cancelled
regression_test / deploy (push) Has been cancelled
cortex_m / Cortex M0 build (push) Has been cancelled
cortex_m / Cortex M3 build (push) Has been cancelled
cortex_m / Cortex M4 build (push) Has been cancelled
cortex_m / Cortex M7 build (push) Has been cancelled
regression_test / tx (push) Has been cancelled
regression_test / smp (push) Has been cancelled
regression_test / deploy (push) Has been cancelled
Merge changes included in the v6.4.3.202503 release.
This commit is contained in:
+214
File diff suppressed because one or more lines are too long
+9
-1
@@ -148,7 +148,9 @@ extern "C" {
|
||||
#define AZURE_RTOS_THREADX
|
||||
#define THREADX_MAJOR_VERSION 6
|
||||
#define THREADX_MINOR_VERSION 4
|
||||
#define THREADX_PATCH_VERSION 2
|
||||
#define THREADX_PATCH_VERSION 3
|
||||
#define THREADX_BUILD_VERSION 202503
|
||||
#define THREADX_HOTFIX_VERSION ''
|
||||
|
||||
/* Define the following symbol for backward compatibility */
|
||||
#define EL_PRODUCT_THREADX
|
||||
@@ -328,6 +330,12 @@ extern "C" {
|
||||
#define TX_TIMER_TICKS_PER_SECOND (100UL)
|
||||
#endif
|
||||
|
||||
/* Define the default maximum message size in a queue. The default value is TX_16_ULONG, but may
|
||||
be customized in tx_user.h or as a compilation option. */
|
||||
|
||||
#ifndef TX_QUEUE_MESSAGE_MAX_SIZE
|
||||
#define TX_QUEUE_MESSAGE_MAX_SIZE TX_16_ULONG
|
||||
#endif
|
||||
|
||||
/* Event numbers 0 through 4095 are reserved by Azure RTOS. Specific event assignments are:
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
_tx_thread_stack_error_handler((thread_ptr)); \
|
||||
TX_DISABLE \
|
||||
} \
|
||||
if (*(((ULONG *) (thread_ptr) -> tx_thread_stack_highest_ptr) - 1) != TX_STACK_FILL) \
|
||||
else if (*(((ULONG *) (thread_ptr) -> tx_thread_stack_highest_ptr) - 1) != TX_STACK_FILL) \
|
||||
{ \
|
||||
TX_RESTORE \
|
||||
_tx_thread_stack_analyze((thread_ptr)); \
|
||||
|
||||
@@ -117,6 +117,13 @@
|
||||
#define TX_TIMER_THREAD_PRIORITY ????
|
||||
*/
|
||||
|
||||
/* Define the maximum size of a message in the a queue. the Default value is TX_ULONG_16.
|
||||
the new value must be a multiple of ULONG. */
|
||||
|
||||
/*
|
||||
#define TX_QUEUE_MESSAGE_MAX_SIZE TX_ULONG_16
|
||||
*/
|
||||
|
||||
/* Define the common timer tick reference for use by other middleware components. The default
|
||||
value is 10ms (i.e. 100 ticks, defined in tx_api.h), but may be replaced by a port-specific
|
||||
version in tx_port.h or here.
|
||||
|
||||
@@ -178,8 +178,8 @@ TX_THREAD *thread_ptr;
|
||||
status = TX_SIZE_ERROR;
|
||||
}
|
||||
|
||||
/* Check for an invalid message size - greater than 16. */
|
||||
else if (message_size > TX_16_ULONG)
|
||||
/* Check for an invalid message size - greater than TX_QUEUE_MESSAGE_MAX_SIZE 16 by default. */
|
||||
else if (message_size > TX_QUEUE_MESSAGE_MAX_SIZE)
|
||||
{
|
||||
|
||||
/* Invalid message size specified. */
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/***************************************************************************
|
||||
* Copyright (c) 2024 Microsoft Corporation
|
||||
* Copyright (c) 2024 Microsoft Corporation
|
||||
* Copyright (c) 2025 Eclipse ThreadX Contributors
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the MIT License which is available at
|
||||
@@ -2389,6 +2390,11 @@ static ALIGN_TYPE _txm_module_manager_tx_thread_preemption_change_dispatch(TXM_M
|
||||
|
||||
ALIGN_TYPE return_value;
|
||||
|
||||
if (param_1 < module_instance -> txm_module_instance_maximum_priority)
|
||||
{
|
||||
return(TX_THRESH_ERROR);
|
||||
}
|
||||
|
||||
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
||||
{
|
||||
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
||||
@@ -2418,6 +2424,11 @@ static ALIGN_TYPE _txm_module_manager_tx_thread_priority_change_dispatch(TXM_MOD
|
||||
|
||||
ALIGN_TYPE return_value;
|
||||
|
||||
if (param_1 < module_instance -> txm_module_instance_maximum_priority)
|
||||
{
|
||||
return(TX_PRIORITY_ERROR);
|
||||
}
|
||||
|
||||
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
||||
{
|
||||
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/* COMPONENT DEFINITION RELEASE */
|
||||
/* */
|
||||
/* txm_module_manager_util.h PORTABLE C */
|
||||
/* 6.3.0 */
|
||||
/* 6.4.3 */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* Scott Larson, Microsoft Corporation */
|
||||
@@ -46,6 +46,10 @@
|
||||
/* 10-31-2023 Tiejun Zhou Modified comment(s) and */
|
||||
/* improved object check, */
|
||||
/* resulting in version 6.3.0 */
|
||||
/* xx-xx-2025 William E. Lamie Modified comment(s) and */
|
||||
/* improved object pointer use */
|
||||
/* and creation checking, */
|
||||
/* resulting in version 6.4.3 */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
|
||||
@@ -102,16 +106,11 @@
|
||||
|
||||
/* Kernel objects should be outside the module at the very least. */
|
||||
#define TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, obj_ptr, obj_size) \
|
||||
(TXM_MODULE_MANAGER_ENSURE_OUTSIDE_MODULE(module_instance, obj_ptr, obj_size) || \
|
||||
(_txm_module_manager_created_object_check(module_instance, (void *)obj_ptr) == TX_FALSE) || \
|
||||
((void *) (obj_ptr) == TX_NULL))
|
||||
(_txm_module_manager_param_check_object_for_use(module_instance, obj_ptr, obj_size))
|
||||
|
||||
/* When creating an object, the object must be inside the object pool. */
|
||||
#define TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, obj_ptr, obj_size) \
|
||||
((TXM_MODULE_MANAGER_ENSURE_INSIDE_OBJ_POOL(module_instance, obj_ptr, obj_size) && \
|
||||
(_txm_module_manager_object_size_check(obj_ptr, obj_size) == TX_SUCCESS)) || \
|
||||
(_txm_module_manager_created_object_check(module_instance, (void *)obj_ptr) == TX_FALSE) || \
|
||||
((void *) (obj_ptr) == TX_NULL))
|
||||
(_txm_module_manager_param_check_object_for_creation(module_instance, obj_ptr, obj_size))
|
||||
|
||||
/* Strings we dereference can be in RW/RO/Shared areas. */
|
||||
#define TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, string_ptr) \
|
||||
@@ -136,6 +135,8 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_inst
|
||||
UINT _txm_module_manager_object_size_check(ALIGN_TYPE object_ptr, ULONG object_size);
|
||||
UINT _txm_module_manager_object_name_compare(CHAR *object_name1, UINT object_name1_length, CHAR *object_name2);
|
||||
UCHAR _txm_module_manager_created_object_check(TXM_MODULE_INSTANCE *module_instance, void *object_ptr);
|
||||
UINT _txm_module_manager_param_check_object_for_creation(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size);
|
||||
UINT _txm_module_manager_param_check_object_for_use(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size);
|
||||
UINT _txm_module_manager_util_code_allocation_size_and_alignment_get(TXM_MODULE_PREAMBLE *module_preamble, ULONG *code_alignment_dest, ULONG *code_allocation_size_dest);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -104,7 +104,7 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_instan
|
||||
/* FUNCTION RELEASE */
|
||||
/* */
|
||||
/* _txm_module_manager_created_object_check PORTABLE C */
|
||||
/* 6.1 */
|
||||
/* 6.1x */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* Scott Larson, Microsoft Corporation */
|
||||
@@ -137,6 +137,10 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_instan
|
||||
/* DATE NAME DESCRIPTION */
|
||||
/* */
|
||||
/* 09-30-2020 Scott Larson Initial Version 6.1 */
|
||||
/* xx-xx-2025 William E. Lamie Modified comment(s), and */
|
||||
/* removed module local memory */
|
||||
/* check, resulting in */
|
||||
/* version 6.1x */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
UCHAR _txm_module_manager_created_object_check(TXM_MODULE_INSTANCE *module_instance, VOID *object_ptr)
|
||||
@@ -144,15 +148,9 @@ UCHAR _txm_module_manager_created_object_check(TXM_MODULE_INSTANCE *module_insta
|
||||
|
||||
TXM_MODULE_ALLOCATED_OBJECT *allocated_object_ptr;
|
||||
|
||||
/* Determine if the socket control block is inside the module. */
|
||||
if ( (((CHAR *) object_ptr) >= ((CHAR *) module_instance -> txm_module_instance_data_start)) &&
|
||||
(((CHAR *) object_ptr) < ((CHAR *) module_instance -> txm_module_instance_data_end)))
|
||||
{
|
||||
return TX_TRUE;
|
||||
}
|
||||
|
||||
/* Determine if this object control block was allocated by this module instance. */
|
||||
else if (_txm_module_manager_object_pool_created)
|
||||
/* Determine if the object pool has been created. */
|
||||
if (_txm_module_manager_object_pool_created)
|
||||
{
|
||||
|
||||
/* Determine if the current object is from the pool of dynamically allocated objects. */
|
||||
@@ -336,6 +334,158 @@ CHAR object_name_char;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION RELEASE */
|
||||
/* */
|
||||
/* _txm_module_manager_param_check_object_for_creation PORTABLE C */
|
||||
/* 6.4.3 */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* William E. Lamie, RTOSX */
|
||||
/* */
|
||||
/* DESCRIPTION */
|
||||
/* */
|
||||
/* This function checks to make sure the object pointer for one of the */
|
||||
/* creation APIs is valid. */
|
||||
/* */
|
||||
/* INPUT */
|
||||
/* */
|
||||
/* module_instance Requesting module instance pointer*/
|
||||
/* object_ptr Address of object memory area */
|
||||
/* ojbect_size Size of object memory area */
|
||||
/* */
|
||||
/* OUTPUT */
|
||||
/* */
|
||||
/* TX_TRUE Valid object pointer */
|
||||
/* TX_FALSE Invalid object pointer */
|
||||
/* */
|
||||
/* CALLS */
|
||||
/* */
|
||||
/* None */
|
||||
/* */
|
||||
/* CALLED BY */
|
||||
/* */
|
||||
/* txm_module_manager_* Module manager functions */
|
||||
/* */
|
||||
/* RELEASE HISTORY */
|
||||
/* */
|
||||
/* DATE NAME DESCRIPTION */
|
||||
/* */
|
||||
/* xx-xx-2025 William E. Lamie Initial Version 6.4.3 */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
UINT _txm_module_manager_param_check_object_for_creation(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size)
|
||||
{
|
||||
|
||||
/* Determine if the object pointer is NULL. */
|
||||
if ((void *) object_ptr == TX_NULL)
|
||||
{
|
||||
|
||||
/* Object pointer is NULL, which is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Determine if the object pointer is inside the module object pool. */
|
||||
if (TXM_MODULE_MANAGER_ENSURE_INSIDE_OBJ_POOL(module_instance, object_ptr, object_size) == TX_FALSE)
|
||||
{
|
||||
|
||||
/* Object pointer is not inside the object pool, which is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Determine if the object size is correct. */
|
||||
if (_txm_module_manager_object_size_check(object_ptr, object_size) != TX_SUCCESS)
|
||||
{
|
||||
|
||||
/* Object size is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Determine if the ojbect has already been created. */
|
||||
if (_txm_module_manager_created_object_check(module_instance, (void *) object_ptr) == TX_FALSE)
|
||||
{
|
||||
|
||||
/* Object has already been created, which is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Everything is okay with the object, return TX_TRUE. */
|
||||
return(TX_TRUE);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION RELEASE */
|
||||
/* */
|
||||
/* _txm_module_manager_param_check_object_for_use PORTABLE C */
|
||||
/* 6.4.3 */
|
||||
/* AUTHOR */
|
||||
/* */
|
||||
/* William E. Lamie, RTOSX */
|
||||
/* */
|
||||
/* DESCRIPTION */
|
||||
/* */
|
||||
/* This function checks to make sure the object pointer is valid. */
|
||||
/* */
|
||||
/* INPUT */
|
||||
/* */
|
||||
/* module_instance Requesting module instance pointer*/
|
||||
/* object_ptr Address of object memory area */
|
||||
/* ojbect_size Size of object memory area */
|
||||
/* */
|
||||
/* OUTPUT */
|
||||
/* */
|
||||
/* TX_TRUE Valid object pointer */
|
||||
/* TX_FALSE Invalid object pointer */
|
||||
/* */
|
||||
/* CALLS */
|
||||
/* */
|
||||
/* None */
|
||||
/* */
|
||||
/* CALLED BY */
|
||||
/* */
|
||||
/* txm_module_manager_* Module manager functions */
|
||||
/* */
|
||||
/* RELEASE HISTORY */
|
||||
/* */
|
||||
/* DATE NAME DESCRIPTION */
|
||||
/* */
|
||||
/* xx-xx-2025 William E. Lamie Initial Version 6.4.3 */
|
||||
/* */
|
||||
/**************************************************************************/
|
||||
UINT _txm_module_manager_param_check_object_for_use(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size)
|
||||
{
|
||||
|
||||
/* Determine if the object pointer is NULL. */
|
||||
if ((void *) object_ptr == TX_NULL)
|
||||
{
|
||||
|
||||
/* Object pointer is NULL, which is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Determine if the object pointer is inside the module object pool. */
|
||||
if (TXM_MODULE_MANAGER_ENSURE_OUTSIDE_MODULE(module_instance, object_ptr, object_size) == TX_FALSE)
|
||||
{
|
||||
|
||||
/* Object pointer is not inside the object pool, which is invalid. */
|
||||
return(TX_FALSE);
|
||||
}
|
||||
|
||||
/* Define application-specific object memory check. */
|
||||
#ifdef TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_CHECK
|
||||
|
||||
/* Bring in the application-spefic objeft memory check, defined by the user. */
|
||||
TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_CHECK
|
||||
#endif /* TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_ENABLE */
|
||||
|
||||
/* Everything is okay with the object, return TX_TRUE. */
|
||||
return(TX_TRUE);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
/* */
|
||||
/* FUNCTION RELEASE */
|
||||
@@ -414,3 +564,5 @@ ULONG data_alignment_ignored;
|
||||
/* Return success. */
|
||||
return(TX_SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -149,7 +149,10 @@ extern "C" {
|
||||
#define AZURE_RTOS_THREADX
|
||||
#define THREADX_MAJOR_VERSION 6
|
||||
#define THREADX_MINOR_VERSION 4
|
||||
#define THREADX_PATCH_VERSION 2
|
||||
#define THREADX_PATCH_VERSION 3
|
||||
#define THREADX_BUILD_VERSION 202503
|
||||
#define THREADX_HOTFIX_VERSION ''
|
||||
|
||||
|
||||
/* Define the following symbol for backward compatibility */
|
||||
#define EL_PRODUCT_THREADX
|
||||
|
||||
@@ -178,8 +178,8 @@ TX_THREAD *thread_ptr;
|
||||
status = TX_SIZE_ERROR;
|
||||
}
|
||||
|
||||
/* Check for an invalid message size - greater than 16. */
|
||||
else if (message_size > TX_16_ULONG)
|
||||
/* Check for an invalid message sizegreater than TX_QUEUE_MESSAGE_MAX_SIZE 16 by default. */
|
||||
else if (message_size > TX_QUEUE_MESSAGE_MAX_SIZE)
|
||||
{
|
||||
|
||||
/* Invalid message size specified. */
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -33,6 +33,26 @@ You should observe the compilation of sample_threadx.c (which is the demonstrati
|
||||
application) and linking with tx.a. The resulting file DEMO is a binary file
|
||||
that can be executed.
|
||||
|
||||
2.1 Includes
|
||||
|
||||
Notice that the demonstration Makefile includes defines for _GNU_SOURCE
|
||||
and TX_LINUX_MULTI_CORE. These are necessary to enable GNU/Linux-specific
|
||||
compatibility for ThreadX using the Linux kernel in multi-core devices,
|
||||
including the option to control processor affinity. See the GNU documentation
|
||||
on CPU affinity and Feature Test Macros for more information.
|
||||
|
||||
TX_LINUX_MULTI_CORE is necessary to enable code that constrains ThreadX to
|
||||
one core, to prevent unintended behavior when threads execute simultaneously
|
||||
across multiple cores. The enabled code configures CPU affinity, requiring
|
||||
the use of macros such as CPU_SET and functions such as sched_setaffinity.
|
||||
Access to these macros and functions (and the underlying types for the latter)
|
||||
are enabled via the definition of _GNU_SOURCE.
|
||||
|
||||
When building your own application, the _GNU_SOURCE and TX_LINUX_MULTI_CORE
|
||||
symbols can be defined by being passed to the compiler (e.g. -D_GNU_SOURCE) or
|
||||
in the optional user-defined ThreadX user define file tx_user.h. In the latter
|
||||
case, ensure that the symbol TX_INCLUDE_USER_DEFINE_FILE is defined, to instruct
|
||||
the tx_port.h header to include tx_user.h.
|
||||
|
||||
3. System Initialization
|
||||
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -439,7 +439,7 @@ void __iar_Initlocks(void);
|
||||
|
||||
#ifdef TX_ENABLE_IAR_LIBRARY_SUPPORT
|
||||
|
||||
#include <DLib_threads.h>
|
||||
#include <DLib_Threads.h>
|
||||
|
||||
|
||||
void * __aeabi_read_tp();
|
||||
|
||||
@@ -33,6 +33,26 @@ You should observe the compilation of sample_threadx.c (which is the demonstrati
|
||||
application) and linking with tx.a. The resulting file DEMO is a binary file
|
||||
that can be executed.
|
||||
|
||||
2.1 Includes
|
||||
|
||||
Notice that the demonstration Makefile includes defines for _GNU_SOURCE
|
||||
and TX_LINUX_MULTI_CORE. These are necessary to enable GNU/Linux-specific
|
||||
compatibility for ThreadX using SMP with the Linux kernel in multi-core devices,
|
||||
including the option to control processor affinity. See the GNU documentation
|
||||
on CPU affinity and Feature Test Macros for more information.
|
||||
|
||||
TX_LINUX_MULTI_CORE is necessary to enable code that constrains ThreadX to
|
||||
one core, to prevent unintended behavior when threads execute simultaneously
|
||||
across multiple cores. The enabled code configures CPU affinity, requiring
|
||||
the use of macros such as CPU_SET and functions such as sched_setaffinity.
|
||||
Access to these macros and functions (and the underlying types for the latter)
|
||||
are enabled via the definition of _GNU_SOURCE.
|
||||
|
||||
When building your own application, the _GNU_SOURCE and TX_LINUX_MULTI_CORE
|
||||
symbols can be defined by being passed to the compiler (e.g. -D_GNU_SOURCE) or
|
||||
in the optional user-defined ThreadX user define file tx_user.h. In the latter
|
||||
case, ensure that the symbol TX_INCLUDE_USER_DEFINE_FILE is defined, to instruct
|
||||
the tx_port.h header to include tx_user.h.
|
||||
|
||||
3. System Initialization
|
||||
|
||||
|
||||
@@ -23,11 +23,11 @@ endif()
|
||||
|
||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||
message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")
|
||||
set(default_build_coverage "")
|
||||
set(disable_notify_callbacks_build -DTX_DISABLE_NOTIFY_CALLBACKS)
|
||||
set(stack_checking_build -DTX_ENABLE_STACK_CHECKING)
|
||||
set(stack_checking_rand_fill_build -DTX_ENABLE_STACK_CHECKING -DTX_ENABLE_RANDOM_NUMBER_STACK_FILLING)
|
||||
set(trace_build -DTX_ENABLE_EVENT_TRACE)
|
||||
set(default_build_coverage -DTX_QUEUE_MESSAGE_MAX_SIZE=32)
|
||||
set(disable_notify_callbacks_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_DISABLE_NOTIFY_CALLBACKS)
|
||||
set(stack_checking_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_STACK_CHECKING)
|
||||
set(stack_checking_rand_fill_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_STACK_CHECKING -DTX_ENABLE_RANDOM_NUMBER_STACK_FILLING)
|
||||
set(trace_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_EVENT_TRACE)
|
||||
|
||||
add_compile_options(
|
||||
-m32
|
||||
|
||||
@@ -47,6 +47,7 @@ set(regression_test_cases
|
||||
${SOURCE_DIR}/threadx_queue_basic_one_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_sixteen_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_two_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_max_message_size_test.c
|
||||
${SOURCE_DIR}/threadx_queue_empty_suspension_test.c
|
||||
${SOURCE_DIR}/threadx_queue_flush_no_suspension_test.c
|
||||
${SOURCE_DIR}/threadx_queue_flush_test.c
|
||||
|
||||
@@ -185,6 +185,7 @@ void threadx_queue_basic_two_word_application_define(void *);
|
||||
void threadx_queue_basic_four_word_application_define(void *);
|
||||
void threadx_queue_basic_eight_word_application_define(void *);
|
||||
void threadx_queue_basic_sixteen_word_application_define(void *);
|
||||
void threadx_queue_basic_max_message_size_application_define(void *);
|
||||
void threadx_queue_empty_suspension_application_define(void *);
|
||||
void threadx_queue_full_suspension_application_define(void *);
|
||||
void threadx_queue_suspension_timeout_application_define(void *);
|
||||
@@ -328,6 +329,7 @@ TEST_ENTRY test_control_tests[] =
|
||||
threadx_queue_basic_four_word_application_define,
|
||||
threadx_queue_basic_eight_word_application_define,
|
||||
threadx_queue_basic_sixteen_word_application_define,
|
||||
threadx_queue_basic_max_message_size_application_define,
|
||||
threadx_queue_empty_suspension_application_define,
|
||||
threadx_queue_full_suspension_application_define,
|
||||
threadx_queue_suspension_timeout_application_define,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -22,11 +22,11 @@ endif()
|
||||
|
||||
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
|
||||
message(STATUS "Using toolchain file: ${CMAKE_TOOLCHAIN_FILE}.")
|
||||
set(default_build_coverage "")
|
||||
set(disable_notify_callbacks_build -DTX_DISABLE_NOTIFY_CALLBACKS)
|
||||
set(stack_checking_build -DTX_ENABLE_STACK_CHECKING)
|
||||
set(stack_checking_rand_fill_build -DTX_ENABLE_STACK_CHECKING -DTX_ENABLE_RANDOM_NUMBER_STACK_FILLING)
|
||||
set(trace_build -DTX_ENABLE_EVENT_TRACE)
|
||||
set(default_build_coverage -DTX_QUEUE_MESSAGE_MAX_SIZE=32)
|
||||
set(disable_notify_callbacks_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_DISABLE_NOTIFY_CALLBACKS)
|
||||
set(stack_checking_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_STACK_CHECKING)
|
||||
set(stack_checking_rand_fill_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_STACK_CHECKING -DTX_ENABLE_RANDOM_NUMBER_STACK_FILLING)
|
||||
set(trace_build -DTX_QUEUE_MESSAGE_MAX_SIZE=32 -DTX_ENABLE_EVENT_TRACE)
|
||||
|
||||
add_compile_options(
|
||||
-m32
|
||||
|
||||
@@ -47,6 +47,7 @@ set(regression_test_cases
|
||||
${SOURCE_DIR}/threadx_queue_basic_one_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_sixteen_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_two_word_test.c
|
||||
${SOURCE_DIR}/threadx_queue_basic_max_message_size_test.c
|
||||
${SOURCE_DIR}/threadx_queue_empty_suspension_test.c
|
||||
${SOURCE_DIR}/threadx_queue_flush_no_suspension_test.c
|
||||
${SOURCE_DIR}/threadx_queue_flush_test.c
|
||||
|
||||
@@ -171,6 +171,7 @@ void threadx_queue_basic_two_word_application_define(void *);
|
||||
void threadx_queue_basic_four_word_application_define(void *);
|
||||
void threadx_queue_basic_eight_word_application_define(void *);
|
||||
void threadx_queue_basic_sixteen_word_application_define(void *);
|
||||
void threadx_queue_basic_max_message_size_application_define(void *);
|
||||
void threadx_queue_empty_suspension_application_define(void *);
|
||||
void threadx_queue_full_suspension_application_define(void *);
|
||||
void threadx_queue_suspension_timeout_application_define(void *);
|
||||
@@ -287,6 +288,7 @@ TEST_ENTRY test_control_tests[] =
|
||||
threadx_queue_basic_four_word_application_define,
|
||||
threadx_queue_basic_eight_word_application_define,
|
||||
threadx_queue_basic_sixteen_word_application_define,
|
||||
threadx_queue_basic_max_message_size_application_define,
|
||||
threadx_queue_empty_suspension_application_define,
|
||||
threadx_queue_full_suspension_application_define,
|
||||
threadx_queue_suspension_timeout_application_define,
|
||||
@@ -1193,6 +1195,7 @@ void test_control_return(UINT status)
|
||||
|
||||
UINT old_posture = TX_INT_ENABLE;
|
||||
|
||||
printf("********** Running Queue Max Message Size Test (%u) ************** \n ", TX_QUEUE_MESSAGE_MAX_SIZE);
|
||||
|
||||
/* Save the status in a global. */
|
||||
test_control_return_status = status;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user