summaryrefslogtreecommitdiff
path: root/test/tx/regression/threadx_trace_basic_test.c
diff options
context:
space:
mode:
authorFrédéric Desbiens <[email protected]>2026-10-02 10:42:44 -0400
committerGitHub <[email protected]>2026-10-02 10:42:44 -0400
commit93387b0a60382a29579bbad5045c68328e3751df (patch)
tree42be790d602cb76f55090e5a7c418df7ea2b3428 /test/tx/regression/threadx_trace_basic_test.c
parent44d7c95c582d415c4ad84527180b29c93c3bf664 (diff)
parent28281cd5647d4671236ca08d19bd18ed15b2265a (diff)
Merge pull request #783 from eclipse-threadx/devv6.5.2.202603_rel
Merged changes ahead of the v6.5.2.202603 release
Diffstat (limited to 'test/tx/regression/threadx_trace_basic_test.c')
-rw-r--r--test/tx/regression/threadx_trace_basic_test.c47
1 files changed, 28 insertions, 19 deletions
diff --git a/test/tx/regression/threadx_trace_basic_test.c b/test/tx/regression/threadx_trace_basic_test.c
index c40be8f1..cacf72b3 100644
--- a/test/tx/regression/threadx_trace_basic_test.c
+++ b/test/tx/regression/threadx_trace_basic_test.c
@@ -9,6 +9,8 @@
/* SPDX-License-Identifier: MIT */
/***************************************************************************/
+/* Portions of this file were generated with AI assistance. */
+
/* This test is designed to test trace functionality in ThreadX. */
@@ -23,7 +25,7 @@
extern VOID (*test_isr_dispatch)(void);
extern UINT _tx_trace_interrupt_control(UINT new_posture);
-extern VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2);
+extern VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, TX_NAME_CONST CHAR *object_name, ULONG parameter_1, ULONG parameter_2);
extern VOID _tx_trace_object_unregister(VOID *object_ptr);
static unsigned long thread_0_counter = 0;
@@ -66,6 +68,16 @@ static unsigned long error = 0;
static unsigned long full_buffer = 0;
static void *save_pointer;
+#define TRACE_BLOCK_POOL_SIZE ((ULONG) (((100U + sizeof(ALIGN_TYPE) - 1U) / sizeof(ALIGN_TYPE)) * sizeof(ALIGN_TYPE)))
+#define TRACE_BYTE_POOL_SIZE ((ULONG) (((1000U + sizeof(ALIGN_TYPE) - 1U) / sizeof(ALIGN_TYPE)) * sizeof(ALIGN_TYPE)))
+
+/* Keep pool storage aligned for ports with pointer-wide metadata. */
+static struct
+{
+ ALIGN_TYPE alignment;
+ CHAR bytes[TRACE_BLOCK_POOL_SIZE + TRACE_BYTE_POOL_SIZE + 400U];
+} object_memory;
+
#if defined(TX_WIN32_MEMORY_SIZE) || defined(TX_LINUX_MEMORY_SIZE)
static FILE *trace_dump_file;
@@ -185,25 +197,21 @@ INT status;
CHAR *pointer;
- /* Setup a pointer. */
- pointer = (CHAR *) first_unused_memory;
-
- /* Adjust it forward just to make sure there is some space for the test below. */
- pointer = pointer + 200;
+ /* Setup aligned object storage. */
+ pointer = object_memory.bytes;
/* Create a bunch of objects before being enabled. */
/* Create a timer for the test. */
save_pointer = (void *) pointer;
tx_timer_create(&timer_0, "timer 0", timer_entry, 0, 2, 2, TX_AUTO_ACTIVATE);
- tx_block_pool_create(&block_pool_0, "block pool 0", 20, pointer, 100);
- pointer = pointer + 100;
- tx_byte_pool_create(&byte_pool_0, "byte pool 0", pointer, 1000);
- pointer = pointer + 1000;
+ tx_block_pool_create(&block_pool_0, "block pool 0", 20, pointer, TRACE_BLOCK_POOL_SIZE);
+ pointer = pointer + TRACE_BLOCK_POOL_SIZE;
+ tx_byte_pool_create(&byte_pool_0, "byte pool 0", pointer, TRACE_BYTE_POOL_SIZE);
+ pointer = pointer + TRACE_BYTE_POOL_SIZE;
tx_event_flags_create(&group_0, "event flags group 0");
tx_mutex_create(&mutex_0, "mutex 0", TX_NO_INHERIT);
tx_queue_create(&queue_0, "queue 0", 16, pointer, 400);
- pointer = pointer + 400;
tx_semaphore_create(&semaphore_0, "semaphore 0", 1);
/* Enable event tracing. */
@@ -230,6 +238,9 @@ CHAR *pointer;
}
#endif
+ pointer = (CHAR *) first_unused_memory;
+ pointer = pointer + 200;
+
/* Put system definition stuff in here, e.g. thread creates and other assorted
create information. */
@@ -281,12 +292,11 @@ static void thread_0_entry(ULONG thread_input)
UINT status;
UINT old_interrupt;
CHAR *pointer;
-TX_INTERRUPT_SAVE_AREA
ULONG object;
/* Coverage for build without TraceX enabled. */
- tx_saved_posture = _tx_trace_interrupt_control(TX_INT_DISABLE);
- _tx_trace_interrupt_control(tx_saved_posture);
+ old_interrupt = _tx_trace_interrupt_control(TX_INT_DISABLE);
+ _tx_trace_interrupt_control(old_interrupt);
#ifndef TX_ENABLE_EVENT_TRACE
_tx_trace_object_register(0, TX_NULL, TX_NULL, 0, 0);
_tx_trace_object_register(1, TX_NULL, TX_NULL, 0, 0);
@@ -354,14 +364,13 @@ ULONG object;
/* Now, create them all again. */
pointer = (CHAR *) save_pointer;
- tx_block_pool_create(&block_pool_0, "block pool 0", 20, pointer, 100);
- pointer = pointer + 100;
- tx_byte_pool_create(&byte_pool_0, "byte pool 0", pointer, 1000);
- pointer = pointer + 1000;
+ tx_block_pool_create(&block_pool_0, "block pool 0", 20, pointer, TRACE_BLOCK_POOL_SIZE);
+ pointer = pointer + TRACE_BLOCK_POOL_SIZE;
+ tx_byte_pool_create(&byte_pool_0, "byte pool 0", pointer, TRACE_BYTE_POOL_SIZE);
+ pointer = pointer + TRACE_BYTE_POOL_SIZE;
tx_event_flags_create(&group_0, "event flags group 0");
tx_mutex_create(&mutex_0, "mutex 0", TX_NO_INHERIT);
tx_queue_create(&queue_0, "queue 0", 16, pointer, 400);
- pointer = pointer + 400;
tx_semaphore_create(&semaphore_0, "semaphore 0", 1);
/* Attempt to enable event tracing again. */