From 92ce0754ed42f9d9d1121805057db5cc9c171d66 Mon Sep 17 00:00:00 2001 From: Frédéric Desbiens Date: Mon, 27 Jul 2026 10:30:29 -0400 Subject: Marked txm_module_object_deallocate as deprecated (#559) Added a compile-time #pragma message warning to the module library source so that any module that includes or compiles this file receives an explicit deprecation notice at build time. Updated the internal documentation block in the manager-side implementation to explain that this function must not be called directly and that calling it on a live object causes a use-after-free. The Module Manager dispatch layer already releases pool memory automatically after a successful tx_*_delete() call. Module authors should remove any explicit call to txm_module_object_deallocate(). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../module_lib/src/txm_module_object_deallocate.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'common_modules/module_lib/src') diff --git a/common_modules/module_lib/src/txm_module_object_deallocate.c b/common_modules/module_lib/src/txm_module_object_deallocate.c index c0ffb097..480c6100 100644 --- a/common_modules/module_lib/src/txm_module_object_deallocate.c +++ b/common_modules/module_lib/src/txm_module_object_deallocate.c @@ -23,6 +23,27 @@ #define TXM_MODULE #include "txm_module.h" #ifndef TXM_MODULE_OBJECT_DEALLOCATE_CALL_NOT_USED + +/* DEPRECATION NOTICE + * txm_module_object_deallocate() is deprecated and must not be used in new + * code. It is retained only for backward-compatibility with existing modules. + * + * WHY: when a module calls tx_timer_delete(), tx_semaphore_delete(), or any + * other tx_*_delete() service, the Module Manager dispatch layer automatically + * releases the associated object pool memory after the kernel cleanup + * completes. No separate deallocation call is required or expected. + * + * WHAT TO DO: remove any call to txm_module_object_deallocate() from your + * module. The corresponding tx_*_delete() call already handles everything. + * + * RISK: calling txm_module_object_deallocate() on a live kernel object (one + * whose tx_*_delete() has not yet been called) frees the backing pool memory + * while the object is still referenced by the kernel, which is undefined + * behaviour (use-after-free). + */ +#pragma message("txm_module_object_deallocate() is deprecated and must not be used. " \ + "Call tx_*_delete() instead; the Module Manager dispatch layer " \ + "releases pool memory automatically on success.") /**************************************************************************/ /* */ /* FUNCTION RELEASE */ -- cgit v1.3.1 From 190c4d6be48ae2fcf555d282691f6dfd985323ee Mon Sep 17 00:00:00 2001 From: Frédéric Desbiens Date: Mon, 27 Jul 2026 10:30:49 -0400 Subject: Flagged txm_module_object_pointer_get as deprecated (#562) Added #pragma message compile-time warning to the module library source and updated the DESCRIPTION blocks in both the library and manager implementations. Reason: this wrapper passes UINT_MAX as the name-buffer length to the underlying extended search. The comparison loop can therefore read past the end of a short name buffer, which is undefined behaviour. Callers should use txm_module_object_pointer_get_extended() and supply the actual buffer length. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../module_lib/src/txm_module_object_pointer_get.c | 23 +++++++++++++++++++--- .../src/txm_module_manager_object_pointer_get.c | 7 ++++--- 2 files changed, 24 insertions(+), 6 deletions(-) (limited to 'common_modules/module_lib/src') diff --git a/common_modules/module_lib/src/txm_module_object_pointer_get.c b/common_modules/module_lib/src/txm_module_object_pointer_get.c index 6417457a..fcd7ab1f 100644 --- a/common_modules/module_lib/src/txm_module_object_pointer_get.c +++ b/common_modules/module_lib/src/txm_module_object_pointer_get.c @@ -23,6 +23,22 @@ #define TXM_MODULE #include "txm_module.h" #ifndef TXM_MODULE_OBJECT_POINTER_GET_CALL_NOT_USED + +/* DEPRECATION NOTICE + * txm_module_object_pointer_get() is deprecated. Do not use it in new code. + * + * WHY: this function passes UINT_MAX as the name-buffer length to the + * underlying search. If the name pointer points to a buffer shorter than + * the searched string, the comparison can read past the end of the buffer, + * which is undefined behaviour. + * + * WHAT TO DO: replace calls with txm_module_object_pointer_get_extended(), + * passing the actual length of the name buffer as the third argument. + */ +#pragma message("txm_module_object_pointer_get() is deprecated. " \ + "Use txm_module_object_pointer_get_extended() and pass " \ + "the actual name buffer length.") + /**************************************************************************/ /* */ /* FUNCTION RELEASE */ @@ -35,9 +51,10 @@ /* */ /* DESCRIPTION */ /* */ -/* This function is deprecated and calls the secure version of this */ -/* function (_txm_module_manager_object_pointer_get_extended) with the */ -/* maximum possible name length since none was passed. */ +/* DEPRECATED. Use _txm_module_object_pointer_get_extended() instead, */ +/* passing the actual name-buffer length. This wrapper passes */ +/* UINT_MAX as the length, which can cause the name-comparison loop */ +/* to read past the end of a short buffer (undefined behaviour). */ /* */ /* INPUT */ /* */ diff --git a/common_modules/module_manager/src/txm_module_manager_object_pointer_get.c b/common_modules/module_manager/src/txm_module_manager_object_pointer_get.c index 84cf6c96..8b24558b 100644 --- a/common_modules/module_manager/src/txm_module_manager_object_pointer_get.c +++ b/common_modules/module_manager/src/txm_module_manager_object_pointer_get.c @@ -37,9 +37,10 @@ /* */ /* DESCRIPTION */ /* */ -/* This function is deprecated and calls the secure version of this */ -/* function (_txm_module_manager_object_pointer_get_extended) with the */ -/* maximum possible name length since none was passed. */ +/* DEPRECATED. Use _txm_module_manager_object_pointer_get_extended() */ +/* instead, passing the actual name-buffer length. This wrapper */ +/* passes UINT_MAX as the length, which can cause the name-comparison */ +/* loop to read past the end of a short buffer (undefined behaviour). */ /* */ /* INPUT */ /* */ -- cgit v1.3.1 From 2930618cfeb77af872c7b3e13bf584c85c2ac153 Mon Sep 17 00:00:00 2001 From: Frédéric Desbiens Date: Mon, 28 Sep 2026 10:13:22 -0400 Subject: Merge commit from fork * Refused to give back the memory of a live kernel object A module allocates the control blocks of its kernel objects from the Module Manager's object pool and can ask for that memory back by address. The manager released it whatever was in it, including a control block the kernel was still using. Deallocation is not deletion: the object stays on the created list for its type, a thread stays wherever it was on the ready or suspension lists and stays schedulable, and an active timer stays on the timer list. Nothing on those paths consults a control block ID, so nothing about the memory having been freed stops the kernel from using it -- a created list walk reads a name pointer out of it and follows that pointer, a create or delete of another object of the same type writes through the created links in it, the scheduler switches the stack pointer to the word at offset 8 of it and pops a saved processor state, and timer expiration calls the function pointer in it. Meanwhile the byte pool is free to hand those same bytes to the next allocation, so what the kernel goes on reading as a control block becomes whatever the next owner of the memory puts there, through ordinary create services. The manager now refuses to release memory that holds an object which is still created, and returns TX_DELETE_ERROR without touching the allocation, the object or the memory. Deleting the object first is what makes its memory releasable, which is the sequence the delete dispatchers already follow and the one module authors are told to follow. The question is answered from the kernel's created lists, not from the control block. A control block ID is not evidence that an object is there: an allocation that was never created can be carrying the value of an ID, and refusing on that would strand memory a module is entitled to have back. Deallocation is also given an address and nothing else, so unlike a typed service it cannot be told which list to search, and each of the eight lists is searched in turn. The search is not narrowed by the size of the allocation, because that would be sound only if every object had been created through a size-checked path, and a module running without memory protection creates objects through no such path -- a queue at the start of a thread-sized allocation is a case the tests here cover. Each list is searched in its own interrupts-disabled window, bounded by the count the kernel keeps beside it, so the longest window is the length of one type's list and a list whose links have been damaged cannot make the search run on. The whole search is one pass over the objects the system has created, paid once per object deallocation. Storage that is not an object is released exactly as before, which is what keeps cleanup after a create that failed or was abandoned working, and what makes the release each delete dispatcher performs after a successful delete go through. The address the request arrives with is now checked before the manager's private header in front of it is read, rather than partly after. The size of the allocation comes from that header, so there is nothing to validate a size against until the header has been read, and the previous order established only where the header started: a header that began inside the pool and ended past it had its size word read from outside the pool. That check has moved out of the dispatcher into _txm_module_manager_param_check_object_for_deallocation, alongside the other parameter checks the dispatch table uses and where a test can reach it, and it now also refuses a size that would carry the end of the allocation past the top of the address space instead of wrapping it, since a wrapped end compares as though the allocation were inside the pool. The 301 expectations in the new test drive all eight object types through allocate, create, a refused deallocation, delete, and a deallocation that succeeds, and assert after the refusal that nothing reached the pool, that the allocation is still on the module's list at the head of it, that the control block still carries its ID and that the object is still live. They cover storage that was never created, storage carrying nothing but a plausible ID for each of the eight types, an object at the start of an oversized allocation, every aligned interior offset of a live object with that object's own ID planted at it, an application-owned object outside the pool, another module's allocations both live and raw, releasing the head of a list of several and releasing the same address twice, a type that has no created list, the bounds on the search against a list longer than its count and against a count larger than its list for every type, the boundary addresses at both ends of the pool, a crafted size, and an object pool that was never created. Removing the refusal fails 43 of them; removing the size wrap guard fails one. Line and branch coverage of the three new functions and of the changed _txm_module_manager_object_deallocate is 100%, with one exception that is test scaffolding rather than product code: the host shim's stand-in for TX_RESTORE has an underflow guard, and the test asserts that branch is never taken. All 99 tests pass in each of the five configurations the tree builds with GCC 14. Assisted-by: Claude Code (Opus 5) * Removed the object deallocation bounds check superseded by the search _txm_module_manager_param_check_object_for_deallocation() bounded the private header in front of a caller's address before the deallocator read it. The deallocator no longer reads that header: it finds the allocation by searching the module's own allocation list, which never dereferences the address, so the bounds check now guards a read that does not happen. The function, its prototype, its macro and its one call site in the txm_module_object_deallocate dispatcher are removed, along with the twelve expectations that covered it and three declarations left unused by their removal. The search proves more than the check did: the bounds test established only that the header lay inside the object pool, while the search establishes that the address is the exact start of one of this module's allocations. The live object deallocation test holds 289 expectations and passes. Reverting the live-object guard still fails 51 of them, the same 51 as before the deletion, so nothing the removed expectations covered was load-bearing. The full suite passes 108/108 in default_build_coverage, with no warnings. Assisted-by: Claude Code (Opus 5) --- build-all.log | 442 +++++++ .../module_lib/src/txm_module_object_deallocate.c | 19 +- .../inc/txm_module_manager_dispatch.h | 37 +- .../module_manager/inc/txm_module_manager_util.h | 1 + .../src/txm_module_manager_object_deallocate.c | 41 +- .../module_manager/src/txm_module_manager_util.c | 110 +- ctest-all.log | 220 ++++ test/tx/cmake/module_manager/CMakeLists.txt | 26 + ..._module_manager_live_object_deallocation_test.c | 1223 ++++++++++++++++++++ ...adx_module_manager_object_authentication_test.c | 29 +- 10 files changed, 2086 insertions(+), 62 deletions(-) create mode 100644 build-all.log create mode 100644 ctest-all.log create mode 100644 test/tx/module_manager/threadx_module_manager_live_object_deallocation_test.c (limited to 'common_modules/module_lib/src') diff --git a/build-all.log b/build-all.log new file mode 100644 index 00000000..dbdac945 --- /dev/null +++ b/build-all.log @@ -0,0 +1,442 @@ +[1/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_performance_info_get.c.o +[2/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_context_save.c.o +[3/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_timer_interrupt.c.o +[4/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_info_get.c.o +[5/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_reset.c.o +[6/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_delete.c.o +[7/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_cleanup.c.o +[8/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_interrupt_control.c.o +[9/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_delete.c.o +[10/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_allocate.c.o +[11/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_initialize.c.o +[12/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_performance_system_info_get.c.o +[13/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_context_restore.c.o +[14/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_system_return.c.o +[15/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_stack_build.c.o +[16/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_create.c.o +[17/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_thread_schedule.c.o +[18/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_initialize.c.o +[19/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_pool_prioritize.c.o +[20/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_performance_system_info_get.c.o +[21/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_block_release.c.o +[22/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_create.c.o +[23/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_delete.c.o +[24/441] Building C object threadx/CMakeFiles/threadx.dir/ports/linux/gnu/src/tx_initialize_low_level.c.o +[25/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_info_get.c.o +[26/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_cleanup.c.o +[27/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_cleanup.c.o +[28/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_create.c.o +[29/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_prioritize.c.o +[30/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_search.c.o +[31/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_delete.c.o +[32/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_release.c.o +[33/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_allocate.c.o +[34/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_byte_pool_performance_info_get.c.o +[35/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_get.c.o +[36/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_performance_info_get.c.o +[37/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_info_get.c.o +[38/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_initialize.c.o +[39/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_performance_system_info_get.c.o +[40/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_initialize_high_level.c.o +[41/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_misra.c.o +[42/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_create.c.o +[43/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_set.c.o +[44/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_initialize_kernel_setup.c.o +[45/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_initialize_kernel_enter.c.o +[46/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_cleanup.c.o +[47/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_initialize.c.o +[48/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_get.c.o +[49/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_event_flags_set_notify.c.o +[50/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_info_get.c.o +[51/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_performance_info_get.c.o +[52/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_performance_system_info_get.c.o +[53/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_delete.c.o +[54/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_priority_change.c.o +[55/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_prioritize.c.o +[56/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_initialize.c.o +[57/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_create.c.o +[58/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_cleanup.c.o +[59/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_delete.c.o +[60/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_flush.c.o +[61/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_front_send.c.o +[62/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_performance_system_info_get.c.o +[63/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_performance_info_get.c.o +[64/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_prioritize.c.o +[65/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_ceiling_put.c.o +[66/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_send.c.o +[67/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_info_get.c.o +[68/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_mutex_put.c.o +[69/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_initialize.c.o +[70/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_get.c.o +[71/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_create.c.o +[72/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_delete.c.o +[73/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_info_get.c.o +[74/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_performance_system_info_get.c.o +[75/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_send_notify.c.o +[76/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_cleanup.c.o +[77/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_queue_receive.c.o +[78/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_performance_info_get.c.o +[79/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_prioritize.c.o +[80/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_create.c.o +[81/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_put.c.o +[82/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_semaphore_put_notify.c.o +[83/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_entry_exit_notify.c.o +[84/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_identify.c.o +[85/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_performance_info_get.c.o +[86/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_performance_system_info_get.c.o +[87/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_relinquish.c.o +[88/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_preemption_change.c.o +[89/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_priority_change.c.o +[90/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_resume.c.o +[91/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_shell_entry.c.o +[92/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_stack_error_handler.c.o +[93/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_sleep.c.o +[94/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_stack_analyze.c.o +[95/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_initialize.c.o +[96/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_info_get.c.o +[97/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_stack_error_notify.c.o +[98/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_time_slice.c.o +[99/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_time_get.c.o +[100/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_terminate.c.o +[101/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_activate.c.o +[102/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_timeout.c.o +[103/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_system_resume.c.o +[104/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_suspend.c.o +[105/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_time_slice_change.c.o +[106/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_create.c.o +[107/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_delete.c.o +[108/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_change.c.o +[109/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_deactivate.c.o +[110/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_wait_abort.c.o +[111/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_system_preempt_check.c.o +[112/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_info_get.c.o +[113/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_thread_system_suspend.c.o +[114/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_time_set.c.o +[115/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_system_deactivate.c.o +[116/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_initialize.c.o +[117/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_performance_info_get.c.o +[118/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_performance_system_info_get.c.o +[119/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_expiration_process.c.o +[120/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_system_activate.c.o +[121/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_disable.c.o +[122/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_enable.c.o +[123/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_event_filter.c.o +[124/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_interrupt_control.c.o +[125/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_buffer_full_notify.c.o +[126/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_initialize.c.o +[127/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_isr_exit_insert.c.o +[128/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_timer_thread_entry.c.o +[129/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_event_unfilter.c.o +[130/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_isr_enter_insert.c.o +[131/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_object_unregister.c.o +[132/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_pool_prioritize.c.o +[133/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_object_register.c.o +[134/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_pool_delete.c.o +[135/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/tx_trace_user_event_insert.c.o +[136/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_pool_info_get.c.o +[137/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_allocate.c.o +[138/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_allocate.c.o +[139/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_release.c.o +[140/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_block_pool_create.c.o +[141/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_pool_create.c.o +[142/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_pool_delete.c.o +[143/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_pool_prioritize.c.o +[144/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_pool_info_get.c.o +[145/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_byte_release.c.o +[146/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_create.c.o +[147/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_info_get.c.o +[148/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_delete.c.o +[149/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_get.c.o +[150/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_set.c.o +[151/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_event_flags_set_notify.c.o +[152/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_info_get.c.o +[153/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_get.c.o +[154/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_delete.c.o +[155/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_prioritize.c.o +[156/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_put.c.o +[157/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_delete.c.o +[158/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_create.c.o +[159/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_front_send.c.o +[160/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_prioritize.c.o +[161/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_receive.c.o +[162/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_mutex_create.c.o +[163/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_flush.c.o +[164/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_info_get.c.o +[165/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_send.c.o +[166/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_queue_send_notify.c.o +[167/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_delete.c.o +[168/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_get.c.o +[169/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_prioritize.c.o +[170/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_info_get.c.o +[171/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_put_notify.c.o +[172/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_ceiling_put.c.o +[173/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_put.c.o +[174/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_entry_exit_notify.c.o +[175/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_semaphore_create.c.o +[176/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_delete.c.o +[177/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_info_get.c.o +[178/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_preemption_change.c.o +[179/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_priority_change.c.o +[180/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_create.c.o +[181/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_reset.c.o +[182/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_relinquish.c.o +[183/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_time_slice_change.c.o +[184/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_suspend.c.o +[185/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_wait_abort.c.o +[186/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_resume.c.o +[187/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_activate.c.o +[188/441] Building C object regression/CMakeFiles/test_weak_defaults.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/shared/regression/testcontrol_weak_defaults.c.o +[189/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_change.c.o +[190/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_thread_terminate.c.o +[191/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_delete.c.o +[192/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_deactivate.c.o +[193/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_shell_entry.c.o +[194/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_create.c.o +[195/441] Building C object samples/CMakeFiles/sample_threadx.dir/fake.c.o +[196/441] Building C object regression/CMakeFiles/threadx_initialize_kernel_setup_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_initialize_kernel_setup_test.c.o +[197/441] Building C object samples/CMakeFiles/sample_threadx.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/ports/linux/gnu/example_build/sample_threadx.c.o +[198/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_delete.c.o +[199/441] Building C object threadx/CMakeFiles/threadx.dir/common/src/txe_timer_info_get.c.o +[200/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_delete.c.o +[201/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/thread_transition/threadx_thread_transition_configuration_test.c.o +[202/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_terminate.c.o +[203/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_terminate.c.o +[204/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_reset.c.o +[205/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_initialize.c.o +[206/441] Building C object thread_transition/CMakeFiles/tx_tt_ni.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_reset.c.o +[207/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_shell_entry.c.o +[208/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_delete.c.o +[209/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_terminate.c.o +[210/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_reset.c.o +[211/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/thread_transition/threadx_thread_transition_configuration_test.c.o +[212/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_reset.c.o +[213/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_delete.c.o +[214/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_shell_entry.c.o +[215/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_terminate.c.o +[216/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_terminate.c.o +[217/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_initialize.c.o +[218/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_delete.c.o +[219/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_delete.c.o +[220/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_reset.c.o +[221/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_terminate.c.o +[222/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_reset.c.o +[223/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/thread_transition/threadx_thread_transition_configuration_test.c.o +[224/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_shell_entry.c.o +[225/441] Building C object thread_transition/CMakeFiles/tx_tt_ni_no_notify.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_initialize.c.o +[226/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_delete.c.o +[227/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_terminate.c.o +[228/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_reset.c.o +[229/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/thread_transition/threadx_thread_transition_configuration_test.c.o +[230/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_terminate.c.o +[231/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_reset.c.o +[232/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/tx_thread_initialize.c.o +[233/441] Building C object thread_transition/CMakeFiles/tx_tt_no_error_checking.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/common/src/txe_thread_delete.c.o +[234/441] Linking C executable thread_transition/tx_tt_ni +[235/441] Linking C executable thread_transition/tx_tt_ni_no_error_checking +[236/441] Linking C executable thread_transition/tx_tt_ni_no_notify +[237/441] Linking C executable thread_transition/tx_tt_no_error_checking +[238/441] Linking C shared library threadx/libthreadx.so +[239/441] Generating tx_initialize_low_level.c for test +[240/441] Building C object regression/CMakeFiles/threadx_block_memory_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_thread_terminate_test.c.o +[241/441] Building C object regression/CMakeFiles/threadx_block_memory_error_detection_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_error_detection_test.c.o +[242/441] Building C object regression/CMakeFiles/threadx_byte_memory_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_suspension_test.c.o +[243/441] Building C object regression/CMakeFiles/threadx_block_memory_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_information_test.c.o +[244/441] Building C object regression/CMakeFiles/threadx_block_memory_prioritize_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_prioritize_test.c.o +[245/441] Building C object regression/CMakeFiles/threadx_block_memory_suspension_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_suspension_timeout_test.c.o +[246/441] Building C object regression/CMakeFiles/threadx_byte_memory_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_information_test.c.o +[247/441] Building C object regression/CMakeFiles/threadx_block_memory_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_basic_test.c.o +[248/441] Building C object regression/CMakeFiles/threadx_block_memory_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_block_memory_suspension_test.c.o +[249/441] Building C object regression/CMakeFiles/threadx_byte_memory_suspension_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_suspension_timeout_test.c.o +[250/441] Building C object regression/CMakeFiles/threadx_byte_memory_prioritize_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_prioritize_test.c.o +[251/441] Building C object regression/CMakeFiles/threadx_byte_memory_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_basic_test.c.o +[252/441] Building C object regression/CMakeFiles/test_utility.dir/tx_initialize_low_level.c.o +[253/441] Building C object regression/CMakeFiles/threadx_byte_memory_thread_contention_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_thread_contention_test.c.o +[254/441] Building C object regression/CMakeFiles/test_utility.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/testcontrol.c.o +[255/441] Building C object regression/CMakeFiles/threadx_byte_memory_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_byte_memory_thread_terminate_test.c.o +[256/441] Building C object regression/CMakeFiles/threadx_interrupt_control_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_interrupt_control_test.c.o +[257/441] Building C object regression/CMakeFiles/threadx_event_flag_suspension_different_bits_consume_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_suspension_different_bits_consume_test.c.o +[258/441] Building C object regression/CMakeFiles/threadx_event_flag_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_suspension_test.c.o +[259/441] Building C object regression/CMakeFiles/threadx_event_flag_isr_wait_abort_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_isr_wait_abort_test.c.o +[260/441] Building C object regression/CMakeFiles/threadx_event_flag_isr_set_clear_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_isr_set_clear_test.c.o +[261/441] Building C object regression/CMakeFiles/threadx_event_flag_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_basic_test.c.o +[262/441] Building C object regression/CMakeFiles/threadx_event_flag_suspension_consume_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_suspension_consume_test.c.o +[263/441] Building C object regression/CMakeFiles/threadx_event_flag_single_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_single_thread_terminate_test.c.o +[264/441] Building C object regression/CMakeFiles/threadx_event_flag_suspension_different_bits_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_suspension_different_bits_test.c.o +[265/441] Building C object regression/CMakeFiles/threadx_event_flag_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_thread_terminate_test.c.o +[266/441] Building C object regression/CMakeFiles/threadx_event_flag_suspension_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_suspension_timeout_test.c.o +[267/441] Building C object regression/CMakeFiles/threadx_event_flag_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_event_flag_information_test.c.o +[268/441] Building C object regression/CMakeFiles/threadx_mutex_delete_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_delete_test.c.o +[269/441] Building C object regression/CMakeFiles/threadx_mutex_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_basic_test.c.o +[270/441] Linking C executable samples/sample_threadx +[271/441] Linking C executable regression/threadx_initialize_kernel_setup_test +[272/441] Linking C executable regression/threadx_block_memory_suspension_test +[273/441] Linking C executable regression/threadx_block_memory_basic_test +[274/441] Linking C executable regression/threadx_block_memory_error_detection_test +[275/441] Linking C executable regression/threadx_block_memory_information_test +[276/441] Linking C executable regression/threadx_byte_memory_suspension_timeout_test +[277/441] Linking C executable regression/threadx_byte_memory_prioritize_test +[278/441] Linking C executable regression/threadx_block_memory_thread_terminate_test +[279/441] Linking C executable regression/threadx_byte_memory_information_test +[280/441] Linking C executable regression/threadx_byte_memory_suspension_test +[281/441] Linking C executable regression/threadx_event_flag_basic_test +[282/441] Linking C executable regression/threadx_byte_memory_basic_test +[283/441] Linking C executable regression/threadx_byte_memory_thread_contention_test +[284/441] Linking C executable regression/threadx_block_memory_suspension_timeout_test +[285/441] Linking C executable regression/threadx_block_memory_prioritize_test +[286/441] Linking C executable regression/threadx_event_flag_information_test +[287/441] Linking C executable regression/threadx_byte_memory_thread_terminate_test +[288/441] Building C object regression/CMakeFiles/threadx_mutex_preemption_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_preemption_test.c.o +[289/441] Building C object regression/CMakeFiles/threadx_mutex_no_preemption_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_no_preemption_test.c.o +[290/441] Linking C executable regression/threadx_event_flag_isr_set_clear_test +[291/441] Linking C executable regression/threadx_event_flag_isr_wait_abort_test +[292/441] Building C object regression/CMakeFiles/threadx_mutex_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_information_test.c.o +[293/441] Building C object regression/CMakeFiles/threadx_mutex_nested_priority_inheritance_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_nested_priority_inheritance_test.c.o +[294/441] Building C object regression/CMakeFiles/threadx_mutex_priority_inheritance_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_priority_inheritance_test.c.o +[295/441] Building C object regression/CMakeFiles/threadx_mutex_proritize_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_proritize_test.c.o +[296/441] Building C object regression/CMakeFiles/threadx_mutex_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_thread_terminate_test.c.o +[297/441] Building C object regression/CMakeFiles/threadx_mutex_suspension_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_mutex_suspension_timeout_test.c.o +[298/441] Linking C executable regression/threadx_event_flag_suspension_consume_test +[299/441] Linking C executable regression/threadx_event_flag_single_thread_terminate_test +[300/441] Linking C executable regression/threadx_event_flag_suspension_different_bits_consume_test +[301/441] Linking C executable regression/threadx_event_flag_suspension_timeout_test +[302/441] Linking C executable regression/threadx_interrupt_control_test +[303/441] Linking C executable regression/threadx_event_flag_suspension_test +[304/441] Linking C executable regression/threadx_event_flag_thread_terminate_test +[305/441] Linking C executable regression/threadx_mutex_basic_test +[306/441] Linking C executable regression/threadx_event_flag_suspension_different_bits_test +[307/441] Linking C executable regression/threadx_mutex_delete_test +[308/441] Building C object regression/CMakeFiles/threadx_queue_basic_four_word_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_four_word_test.c.o +[309/441] Building C object regression/CMakeFiles/threadx_queue_basic_eight_word_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_eight_word_test.c.o +[310/441] Building C object regression/CMakeFiles/threadx_queue_basic_one_word_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_one_word_test.c.o +[311/441] Linking C executable regression/threadx_mutex_no_preemption_test +[312/441] Linking C executable regression/threadx_mutex_preemption_test +[313/441] Building C object regression/CMakeFiles/threadx_queue_flush_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_flush_test.c.o +[314/441] Building C object regression/CMakeFiles/threadx_queue_empty_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_empty_suspension_test.c.o +[315/441] Building C object regression/CMakeFiles/threadx_queue_flush_no_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_flush_no_suspension_test.c.o +[316/441] Building C object regression/CMakeFiles/threadx_queue_basic_max_message_size_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_max_message_size_test.c.o +[317/441] Building C object regression/CMakeFiles/threadx_queue_basic_two_word_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_two_word_test.c.o +[318/441] Building C object regression/CMakeFiles/threadx_queue_basic_sixteen_word_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_basic_sixteen_word_test.c.o +[319/441] Linking C executable regression/threadx_mutex_nested_priority_inheritance_test +[320/441] Linking C executable regression/threadx_mutex_priority_inheritance_test +[321/441] Building C object regression/CMakeFiles/threadx_queue_front_send_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_front_send_test.c.o +[322/441] Building C object regression/CMakeFiles/threadx_queue_full_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_full_suspension_test.c.o +[323/441] Building C object regression/CMakeFiles/threadx_queue_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_information_test.c.o +[324/441] Linking C executable regression/threadx_mutex_information_test +[325/441] Linking C executable regression/threadx_mutex_suspension_timeout_test +[326/441] Building C object regression/CMakeFiles/threadx_queue_suspension_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_suspension_timeout_test.c.o +[327/441] Building C object regression/CMakeFiles/threadx_queue_prioritize.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_prioritize.c.o +[328/441] Linking C executable regression/threadx_mutex_thread_terminate_test +[329/441] Linking C executable regression/threadx_mutex_proritize_test +[330/441] Building C object regression/CMakeFiles/threadx_queue_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_queue_thread_terminate_test.c.o +[331/441] Building C object regression/CMakeFiles/threadx_semaphore_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_basic_test.c.o +[332/441] Building C object regression/CMakeFiles/threadx_semaphore_ceiling_put_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_ceiling_put_test.c.o +[333/441] Building C object regression/CMakeFiles/threadx_semaphore_delete_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_delete_test.c.o +[334/441] Linking C executable regression/threadx_queue_basic_eight_word_test +[335/441] Linking C executable regression/threadx_queue_basic_four_word_test +[336/441] Linking C executable regression/threadx_queue_basic_one_word_test +[337/441] Linking C executable regression/threadx_queue_flush_no_suspension_test +[338/441] Linking C executable regression/threadx_queue_empty_suspension_test +[339/441] Linking C executable regression/threadx_queue_basic_max_message_size_test +[340/441] Linking C executable regression/threadx_queue_basic_two_word_test +[341/441] Linking C executable regression/threadx_queue_flush_test +[342/441] Linking C executable regression/threadx_queue_basic_sixteen_word_test +[343/441] Building C object regression/CMakeFiles/threadx_semaphore_non_preemption_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_non_preemption_test.c.o +[344/441] Building C object regression/CMakeFiles/threadx_semaphore_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_information_test.c.o +[345/441] Building C object regression/CMakeFiles/threadx_semaphore_preemption_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_preemption_test.c.o +[346/441] Linking C executable regression/threadx_queue_full_suspension_test +[347/441] Linking C executable regression/threadx_queue_front_send_test +[348/441] Building C object regression/CMakeFiles/threadx_semaphore_timeout_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_timeout_test.c.o +[349/441] Building C object regression/CMakeFiles/threadx_semaphore_thread_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_thread_terminate_test.c.o +[350/441] Building C object regression/CMakeFiles/threadx_thread_basic_time_slice_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_basic_time_slice_test.c.o +[351/441] Building C object regression/CMakeFiles/threadx_semaphore_prioritize.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_semaphore_prioritize.c.o +[352/441] Building C object regression/CMakeFiles/threadx_thread_basic_execution_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_basic_execution_test.c.o +[353/441] Linking C executable regression/threadx_queue_suspension_timeout_test +[354/441] Linking C executable regression/threadx_queue_information_test +[355/441] Building C object regression/CMakeFiles/threadx_thread_completed_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_completed_test.c.o +[356/441] Building C object regression/CMakeFiles/threadx_thread_create_preemption_threshold_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_create_preemption_threshold_test.c.o +[357/441] Building C object regression/CMakeFiles/threadx_thread_delayed_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_delayed_suspension_test.c.o +[358/441] Linking C executable regression/threadx_queue_prioritize +[359/441] Linking C executable regression/threadx_semaphore_basic_test +[360/441] Linking C executable regression/threadx_queue_thread_terminate_test +[361/441] Linking C executable regression/threadx_semaphore_ceiling_put_test +[362/441] Building C object regression/CMakeFiles/threadx_thread_misaligned_stack_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_misaligned_stack_test.c.o +[363/441] Linking C executable regression/threadx_semaphore_delete_test +[364/441] Building C object regression/CMakeFiles/threadx_thread_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_information_test.c.o +[365/441] Building C object regression/CMakeFiles/threadx_thread_multiple_sleep_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_multiple_sleep_test.c.o +[366/441] Building C object regression/CMakeFiles/threadx_thread_multiple_non_current_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_multiple_non_current_test.c.o +[367/441] Building C object regression/CMakeFiles/threadx_thread_multiple_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_multiple_suspension_test.c.o +[368/441] Building C object regression/CMakeFiles/threadx_thread_multiple_time_slice_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_multiple_time_slice_test.c.o +[369/441] Building C object regression/CMakeFiles/threadx_thread_multi_level_preemption_threshold_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_multi_level_preemption_threshold_test.c.o +[370/441] Linking C executable regression/threadx_semaphore_non_preemption_test +[371/441] Linking C executable regression/threadx_semaphore_information_test +[372/441] Linking C executable regression/threadx_semaphore_timeout_test +[373/441] Linking C executable regression/threadx_semaphore_preemption_test +[374/441] Linking C executable regression/threadx_semaphore_thread_terminate_test +[375/441] Linking C executable regression/threadx_semaphore_prioritize +[376/441] Linking C executable regression/threadx_thread_basic_time_slice_test +[377/441] Building C object regression/CMakeFiles/threadx_thread_preemptable_suspension_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_preemptable_suspension_test.c.o +[378/441] Linking C executable regression/threadx_thread_basic_execution_test +[379/441] Linking C executable regression/threadx_thread_completed_test +[380/441] Building C object regression/CMakeFiles/threadx_thread_preemption_change_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_preemption_change_test.c.o +[381/441] Linking C executable regression/threadx_thread_delayed_suspension_test +[382/441] Linking C executable regression/threadx_thread_create_preemption_threshold_test +[383/441] Building C object regression/CMakeFiles/threadx_thread_reset_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_reset_test.c.o +[384/441] Building C object regression/CMakeFiles/threadx_thread_relinquish_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_relinquish_test.c.o +[385/441] Building C object regression/CMakeFiles/threadx_thread_priority_change.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_priority_change.c.o +[386/441] Building C object regression/CMakeFiles/threadx_thread_simple_sleep_non_clear_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_simple_sleep_non_clear_test.c.o +[387/441] Linking C executable regression/threadx_thread_misaligned_stack_test +[388/441] Building C object regression/CMakeFiles/threadx_thread_simple_sleep_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_simple_sleep_test.c.o +[389/441] Building C object regression/CMakeFiles/threadx_thread_simple_suspend_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_simple_suspend_test.c.o +[390/441] Building C object regression/CMakeFiles/threadx_thread_sleep_for_100ticks_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_sleep_for_100ticks_test.c.o +[391/441] Building C object regression/CMakeFiles/threadx_thread_sleep_terminate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_sleep_terminate_test.c.o +[392/441] Building C object regression/CMakeFiles/threadx_thread_stack_checking_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_stack_checking_test.c.o +[393/441] Linking C executable regression/threadx_thread_multiple_non_current_test +[394/441] Linking C executable regression/threadx_thread_multiple_suspension_test +[395/441] Building C object regression/CMakeFiles/threadx_thread_stack_fill_value_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_stack_fill_value_test.c.o +[396/441] Linking C executable regression/threadx_thread_multiple_sleep_test +[397/441] Linking C executable regression/threadx_thread_information_test +[398/441] Linking C executable regression/threadx_thread_multiple_time_slice_test +[399/441] Building C object regression/CMakeFiles/threadx_thread_time_slice_change_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_time_slice_change_test.c.o +[400/441] Building C object regression/CMakeFiles/threadx_thread_terminate_delete_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_terminate_delete_test.c.o +[401/441] Building C object regression/CMakeFiles/threadx_thread_wait_abort_and_isr_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_wait_abort_and_isr_test.c.o +[402/441] Building C object regression/CMakeFiles/threadx_thread_wait_abort_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_wait_abort_test.c.o +[403/441] Linking C executable regression/threadx_thread_multi_level_preemption_threshold_test +[404/441] Building C object regression/CMakeFiles/threadx_thread_exit_callback_transition_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_thread_exit_callback_transition_test.c.o +[405/441] Linking C executable regression/threadx_thread_preemptable_suspension_test +[406/441] Building C object regression/CMakeFiles/threadx_time_get_set_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_time_get_set_test.c.o +[407/441] Linking C executable regression/threadx_thread_preemption_change_test +[408/441] Linking C executable regression/threadx_thread_reset_test +[409/441] Linking C executable regression/threadx_thread_priority_change +[410/441] Linking C executable regression/threadx_thread_relinquish_test +[411/441] Linking C executable regression/threadx_thread_simple_suspend_test +[412/441] Linking C executable regression/threadx_thread_simple_sleep_test +[413/441] Building C object regression/CMakeFiles/threadx_timer_activate_deactivate_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_activate_deactivate_test.c.o +[414/441] Linking C executable regression/threadx_thread_simple_sleep_non_clear_test +[415/441] Linking C executable regression/threadx_thread_sleep_terminate_test +[416/441] Building C object regression/CMakeFiles/threadx_timer_deactivate_accuracy_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_deactivate_accuracy_test.c.o +[417/441] Linking C executable regression/threadx_thread_sleep_for_100ticks_test +[418/441] Linking C executable regression/threadx_thread_stack_checking_test +[419/441] Building C object regression/CMakeFiles/threadx_timer_information_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_information_test.c.o +[420/441] Building C object regression/CMakeFiles/threadx_timer_large_timer_accuracy_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_large_timer_accuracy_test.c.o +[421/441] Building C object regression/CMakeFiles/threadx_timer_multiple_accuracy_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_multiple_accuracy_test.c.o +[422/441] Building C object regression/CMakeFiles/threadx_timer_multiple_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_multiple_test.c.o +[423/441] Building C object regression/CMakeFiles/threadx_timer_simple_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_timer_simple_test.c.o +[424/441] Building C object regression/CMakeFiles/threadx_trace_entry_update_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_trace_entry_update_test.c.o +[425/441] Linking C executable regression/threadx_thread_time_slice_change_test +[426/441] Linking C executable regression/threadx_thread_stack_fill_value_test +[427/441] Building C object regression/CMakeFiles/threadx_trace_basic_test.dir/tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/regression/threadx_trace_basic_test.c.o +[428/441] Linking C executable regression/threadx_thread_terminate_delete_test +[429/441] Linking C executable regression/threadx_thread_exit_callback_transition_test +[430/441] Linking C executable regression/threadx_thread_wait_abort_and_isr_test +[431/441] Linking C executable regression/threadx_thread_wait_abort_test +[432/441] Linking C executable regression/threadx_time_get_set_test +[433/441] Linking C executable regression/threadx_timer_activate_deactivate_test +[434/441] Linking C executable regression/threadx_timer_deactivate_accuracy_test +[435/441] Linking C executable regression/threadx_timer_large_timer_accuracy_test +[436/441] Linking C executable regression/threadx_timer_multiple_accuracy_test +[437/441] Linking C executable regression/threadx_timer_information_test +[438/441] Linking C executable regression/threadx_timer_simple_test +[439/441] Linking C executable regression/threadx_timer_multiple_test +[440/441] Linking C executable regression/threadx_trace_entry_update_test +[441/441] Linking C executable regression/threadx_trace_basic_test +BUILD_RC=0 diff --git a/common_modules/module_lib/src/txm_module_object_deallocate.c b/common_modules/module_lib/src/txm_module_object_deallocate.c index 480c6100..e0c0d6c4 100644 --- a/common_modules/module_lib/src/txm_module_object_deallocate.c +++ b/common_modules/module_lib/src/txm_module_object_deallocate.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +// Some portions generated by Claude Code (Opus 5). + /**************************************************************************/ /**************************************************************************/ @@ -36,14 +38,18 @@ * WHAT TO DO: remove any call to txm_module_object_deallocate() from your * module. The corresponding tx_*_delete() call already handles everything. * - * RISK: calling txm_module_object_deallocate() on a live kernel object (one - * whose tx_*_delete() has not yet been called) frees the backing pool memory - * while the object is still referenced by the kernel, which is undefined - * behaviour (use-after-free). + * BEHAVIOUR: calling txm_module_object_deallocate() on a live kernel object + * (one whose tx_*_delete() has not yet been called) returns TX_DELETE_ERROR + * and changes nothing. The Module Manager will not release the memory of a + * created object, because the kernel goes on using those bytes as a control + * block after the byte pool has handed them to somebody else. Storage that + * was allocated but never made into an object is still released, so cleaning + * up after a create that failed or was abandoned still works. */ #pragma message("txm_module_object_deallocate() is deprecated and must not be used. " \ "Call tx_*_delete() instead; the Module Manager dispatch layer " \ - "releases pool memory automatically on success.") + "releases pool memory automatically on success. Deallocating a " \ + "live kernel object returns TX_DELETE_ERROR.") /**************************************************************************/ /* */ /* FUNCTION RELEASE */ @@ -64,7 +70,8 @@ /* */ /* OUTPUT */ /* */ -/* status Completion status */ +/* status Completion status, TX_DELETE_ERROR*/ +/* if a live object is there */ /* */ /* CALLS */ /* */ diff --git a/common_modules/module_manager/inc/txm_module_manager_dispatch.h b/common_modules/module_manager/inc/txm_module_manager_dispatch.h index 6b75be7f..0160a1d1 100644 --- a/common_modules/module_manager/inc/txm_module_manager_dispatch.h +++ b/common_modules/module_manager/inc/txm_module_manager_dispatch.h @@ -15,6 +15,8 @@ // Some portions generated by Claude Code (Opus 5). +// Some portions generated by Claude Code (Opus 5). + /**************************************************************************/ /**************************************************************************/ @@ -3285,41 +3287,6 @@ static ALIGN_TYPE _txm_module_manager_txm_module_object_deallocate_dispatch(TXM_ { ALIGN_TYPE return_value; -TXM_MODULE_ALLOCATED_OBJECT *object_ptr; -ALIGN_TYPE object_end; -ALIGN_TYPE object_pool_end; - - if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION) - { - /* Is the object pool created? */ - if (_txm_module_manager_object_pool_created == TX_TRUE) - { - - /* Get the module allocated object. */ - object_ptr = ((TXM_MODULE_ALLOCATED_OBJECT *) param_0) - 1; - - /* Get the end address of the object pool. */ - object_pool_end = (ALIGN_TYPE) (_txm_module_manager_object_pool.tx_byte_pool_start + _txm_module_manager_object_pool.tx_byte_pool_size); - - /* Check that the pointer is in the object pool. */ - if ((ALIGN_TYPE) object_ptr < (ALIGN_TYPE) _txm_module_manager_object_pool.tx_byte_pool_start || - (ALIGN_TYPE) object_ptr >= (ALIGN_TYPE) object_pool_end) - { - /* Pointer is outside of the object pool. */ - return(TXM_MODULE_INVALID_MEMORY); - } - - /* Get the end addresses of the object. */ - object_end = ((ALIGN_TYPE) object_ptr) + sizeof(TXM_MODULE_ALLOCATED_OBJECT) + object_ptr -> txm_module_object_size; - - /* Check that the object is in the object pool. */ - if (object_end >= object_pool_end) - { - /* Object is outside of the object pool. */ - return(TXM_MODULE_INVALID_MEMORY); - } - } - } return_value = (ALIGN_TYPE) _txm_module_manager_object_deallocate( (VOID *) param_0 diff --git a/common_modules/module_manager/inc/txm_module_manager_util.h b/common_modules/module_manager/inc/txm_module_manager_util.h index 2630fe29..22b9570e 100644 --- a/common_modules/module_manager/inc/txm_module_manager_util.h +++ b/common_modules/module_manager/inc/txm_module_manager_util.h @@ -162,6 +162,7 @@ TXM_MODULE_ALLOCATED_OBJECT UINT _txm_module_manager_object_type_size_get(UINT object_type, ULONG *object_size); UINT _txm_module_manager_created_object_type_check(ALIGN_TYPE object_ptr, UINT object_type); UINT _txm_module_manager_object_id_check(ALIGN_TYPE object_ptr, UINT object_type); +UINT _txm_module_manager_live_object_check(ALIGN_TYPE object_ptr); 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 diff --git a/common_modules/module_manager/src/txm_module_manager_object_deallocate.c b/common_modules/module_manager/src/txm_module_manager_object_deallocate.c index 43d96f3c..dd4c105d 100644 --- a/common_modules/module_manager/src/txm_module_manager_object_deallocate.c +++ b/common_modules/module_manager/src/txm_module_manager_object_deallocate.c @@ -44,9 +44,7 @@ /* DEPRECATED. This function is called internally by the Module */ /* Manager dispatch layer after a successful tx_*_delete() call from */ /* a module. It must not be called directly by module or application */ -/* code. Calling it on a live kernel object (one whose tx_*_delete() */ -/* has not yet been called) frees the backing pool memory while the */ -/* object is still referenced by the kernel (use-after-free). */ +/* code. */ /* */ /* Module authors: remove any explicit call to */ /* txm_module_object_deallocate(). Calling the appropriate */ @@ -59,6 +57,13 @@ /* header from in front of the address the caller supplied. An */ /* address that names none of this module's allocations returns */ /* TX_PTR_ERROR and is not dereferenced. */ +/* Memory holding a live kernel object is not given back. Such a */ +/* request returns TX_DELETE_ERROR and changes nothing: the object */ +/* stays created, the allocation stays on the module's allocation */ +/* list, and the memory stays owned by the module. Storage that was */ +/* allocated but never made into an object is still released, so a */ +/* module can still clean up after a create that failed or was */ +/* abandoned. */ /* */ /* INPUT */ /* */ @@ -74,6 +79,7 @@ /* _txe_mutex_put Release module instance mutex */ /* _txm_module_manager_allocated_object_find */ /* Find the module's allocation */ +/* _txm_module_manager_live_object_check Check for a live object */ /* _txe_byte_release Release object back to pool */ /* */ /* */ @@ -130,6 +136,35 @@ UINT return_value; /* Set return value to invalid pointer. */ return_value = TX_PTR_ERROR; } + + /* Determine if a live kernel object is in this memory. + + Releasing the memory of a created object leaves the kernel holding the + only references to it. The object stays on the created list for its + type, a thread stays on the ready or suspension list it was on and stays + schedulable, and an active timer stays on the timer list. None of those + consult a control block ID, so nothing about the freed memory stops the + kernel using it: a created list walk reads a name pointer out of it, a + create or delete of another object of the same type writes through the + links in it, the scheduler restores a context from the stack pointer in + it, and timer expiration calls the function pointer in it. The byte pool + is meanwhile free to hand those bytes to the next allocation, so what the + kernel goes on reading as a control block is whatever the next owner of + the memory puts there. + + This is asked before the allocation is unlinked, so a refusal leaves the + allocation list, the object and the memory exactly as they were. What is + refused is releasing the memory of an object that is still created; an + allocation that was never made into an object, or one whose object has + been deleted, is released as before, which is what keeps cleanup after a + failed or abandoned create working and what makes the release the delete + dispatchers perform after a successful delete go through. */ + else if (_txm_module_manager_live_object_check((ALIGN_TYPE) object_ptr) == TX_TRUE) + { + + /* Set return value to indicate the object must be deleted first. */ + return_value = TX_DELETE_ERROR; + } else { diff --git a/common_modules/module_manager/src/txm_module_manager_util.c b/common_modules/module_manager/src/txm_module_manager_util.c index ba7e5a29..756120fa 100644 --- a/common_modules/module_manager/src/txm_module_manager_util.c +++ b/common_modules/module_manager/src/txm_module_manager_util.c @@ -1021,13 +1021,18 @@ UINT exact_object; /* This function determines whether an address is the exact address */ /* of an object on the kernel's created list for a module object type. */ /* */ -/* This is how an object the application created and shared with a */ -/* module is authenticated. Such an object is not in the manager's */ -/* object pool and the manager has no allocation record of it, so the */ -/* kernel's own created list is the only record of it that a module */ -/* cannot influence. Being on that list establishes at once that the */ -/* address is an object start, that the object is of this type, and */ -/* that it is created. */ +/* The created list is the record the create and delete services */ +/* maintain, so being on it establishes at once that the address is an */ +/* object start rather than an address inside an object, that the */ +/* object is of this type, and that it has not been deleted. It is */ +/* also the only record of an object the application created and */ +/* shared with a module, since the manager allocated no such object. */ +/* */ +/* Nothing the module can influence is consulted. In particular the */ +/* control block ID is not: a module can arrange for the value of an */ +/* ID to appear inside memory it owns, and distinct object types of */ +/* equal size exist, so an ID is not evidence that an object is there */ +/* nor of what type it is. */ /* */ /* INPUT */ /* */ @@ -1045,6 +1050,7 @@ UINT exact_object; /* */ /* CALLED BY */ /* */ +/* _txm_module_manager_live_object_check Module object liveness check */ /* _txm_module_manager_param_check_typed_object_for_use */ /* Module object authentication */ /* */ @@ -1402,6 +1408,96 @@ UINT status; } +/**************************************************************************/ +/* */ +/* FUNCTION RELEASE */ +/* */ +/* _txm_module_manager_live_object_check PORTABLE C */ +/* 6.4.3 */ +/* AUTHOR */ +/* */ +/* Eclipse ThreadX contributors */ +/* */ +/* DESCRIPTION */ +/* */ +/* This function determines whether an address is the exact address */ +/* of a live kernel object of any type the Module Manager knows. */ +/* */ +/* It answers the question object deallocation has to ask before it */ +/* gives memory back: is the kernel still going to use these bytes as */ +/* a control block. Deallocation is told an address and nothing else, */ +/* so unlike the checks a typed service makes it cannot be given the */ +/* type to look for, and every type has to be looked for in turn. */ +/* */ +/* The eight created lists are searched whatever the size of the */ +/* allocation at the address. Skipping a type whose control block is */ +/* larger than the allocation would be sound only if every object had */ +/* been created through a size-checked path, and a module running */ +/* without memory protection creates objects without one. */ +/* */ +/* Each list is searched in its own interrupts-disabled window rather */ +/* than all of them in one, so the longest window is bounded by the */ +/* number of objects of a single type. The whole search costs one pass */ +/* over the objects the system has created, and is paid once per */ +/* object deallocation. */ +/* */ +/* INPUT */ +/* */ +/* object_ptr Address of object memory area */ +/* */ +/* OUTPUT */ +/* */ +/* TX_TRUE A live kernel object is there */ +/* TX_FALSE Anything else */ +/* */ +/* CALLS */ +/* */ +/* _txm_module_manager_created_object_type_check */ +/* Check one kernel created list */ +/* */ +/* CALLED BY */ +/* */ +/* _txm_module_manager_object_deallocate Deallocate object memory */ +/* */ +/* RELEASE HISTORY */ +/* */ +/* DATE NAME DESCRIPTION */ +/* */ +/* xx-xx-2026 Eclipse ThreadX Initial Version 6.4.3 */ +/* contributors */ +/* */ +/**************************************************************************/ +UINT _txm_module_manager_live_object_check(ALIGN_TYPE object_ptr) +{ + +UINT object_type; +UINT status; + + + /* Assume no live object is there. */ + status = TX_FALSE; + + /* The eight module object types that have a kernel created list occupy a + contiguous range, so each is asked in turn by walking the range. A value in + the range that the per-type check does not recognise answers TX_FALSE, so a + type the manager stops knowing does not silently pass this search. */ + for (object_type = ((UINT) TXM_BLOCK_POOL_OBJECT); object_type <= ((UINT) TXM_TIMER_OBJECT); object_type++) + { + + if (_txm_module_manager_created_object_type_check(object_ptr, object_type) == TX_TRUE) + { + + /* An address is the start of at most one object, so there is nothing + further to look for. */ + status = TX_TRUE; + break; + } + } + + return(status); +} + + /**************************************************************************/ /* */ /* FUNCTION RELEASE */ diff --git a/ctest-all.log b/ctest-all.log new file mode 100644 index 00000000..51a050e1 --- /dev/null +++ b/ctest-all.log @@ -0,0 +1,220 @@ +Test project /tmp/claude-1000/-home-fdesbiens-652/bc81907a-b0a7-43d2-b3f5-83c3cfaa53e2/scratchpad/mm/test/tx/cmake/build/default_build_coverage + Start 1: default_build_coverage::threadx_block_memory_basic_test + 1/107 Test #1: default_build_coverage::threadx_block_memory_basic_test ............................. Passed 0.08 sec + Start 2: default_build_coverage::threadx_block_memory_error_detection_test + 2/107 Test #2: default_build_coverage::threadx_block_memory_error_detection_test ................... Passed 0.01 sec + Start 3: default_build_coverage::threadx_block_memory_information_test + 3/107 Test #3: default_build_coverage::threadx_block_memory_information_test ....................... Passed 0.02 sec + Start 4: default_build_coverage::threadx_block_memory_prioritize_test + 4/107 Test #4: default_build_coverage::threadx_block_memory_prioritize_test ........................ Passed 0.03 sec + Start 5: default_build_coverage::threadx_block_memory_suspension_test + 5/107 Test #5: default_build_coverage::threadx_block_memory_suspension_test ........................ Passed 0.01 sec + Start 6: default_build_coverage::threadx_block_memory_suspension_timeout_test + 6/107 Test #6: default_build_coverage::threadx_block_memory_suspension_timeout_test ................ Passed 0.65 sec + Start 7: default_build_coverage::threadx_block_memory_thread_terminate_test + 7/107 Test #7: default_build_coverage::threadx_block_memory_thread_terminate_test .................. Passed 0.01 sec + Start 8: default_build_coverage::threadx_byte_memory_basic_test + 8/107 Test #8: default_build_coverage::threadx_byte_memory_basic_test .............................. Passed 0.03 sec + Start 9: default_build_coverage::threadx_byte_memory_information_test + 9/107 Test #9: default_build_coverage::threadx_byte_memory_information_test ........................ Passed 0.02 sec + Start 10: default_build_coverage::threadx_byte_memory_prioritize_test + 10/107 Test #10: default_build_coverage::threadx_byte_memory_prioritize_test ......................... Passed 0.03 sec + Start 11: default_build_coverage::threadx_byte_memory_suspension_test + 11/107 Test #11: default_build_coverage::threadx_byte_memory_suspension_test ......................... Passed 0.01 sec + Start 12: default_build_coverage::threadx_byte_memory_suspension_timeout_test + 12/107 Test #12: default_build_coverage::threadx_byte_memory_suspension_timeout_test ................. Passed 0.65 sec + Start 13: default_build_coverage::threadx_byte_memory_thread_contention_test + 13/107 Test #13: default_build_coverage::threadx_byte_memory_thread_contention_test .................. Passed 1.36 sec + Start 14: default_build_coverage::threadx_byte_memory_thread_terminate_test + 14/107 Test #14: default_build_coverage::threadx_byte_memory_thread_terminate_test ................... Passed 0.01 sec + Start 15: default_build_coverage::threadx_event_flag_basic_test + 15/107 Test #15: default_build_coverage::threadx_event_flag_basic_test ............................... Passed 0.07 sec + Start 16: default_build_coverage::threadx_event_flag_information_test + 16/107 Test #16: default_build_coverage::threadx_event_flag_information_test ......................... Passed 0.01 sec + Start 17: default_build_coverage::threadx_event_flag_isr_set_clear_test + 17/107 Test #17: default_build_coverage::threadx_event_flag_isr_set_clear_test ....................... Passed 0.91 sec + Start 18: default_build_coverage::threadx_event_flag_isr_wait_abort_test + 18/107 Test #18: default_build_coverage::threadx_event_flag_isr_wait_abort_test ...................... Passed 0.81 sec + Start 19: default_build_coverage::threadx_event_flag_single_thread_terminate_test + 19/107 Test #19: default_build_coverage::threadx_event_flag_single_thread_terminate_test ............. Passed 0.31 sec + Start 20: default_build_coverage::threadx_event_flag_suspension_consume_test + 20/107 Test #20: default_build_coverage::threadx_event_flag_suspension_consume_test .................. Passed 0.01 sec + Start 21: default_build_coverage::threadx_event_flag_suspension_different_bits_consume_test + 21/107 Test #21: default_build_coverage::threadx_event_flag_suspension_different_bits_consume_test ... Passed 0.01 sec + Start 22: default_build_coverage::threadx_event_flag_suspension_different_bits_test + 22/107 Test #22: default_build_coverage::threadx_event_flag_suspension_different_bits_test ........... Passed 0.01 sec + Start 23: default_build_coverage::threadx_event_flag_suspension_test + 23/107 Test #23: default_build_coverage::threadx_event_flag_suspension_test .......................... Passed 0.01 sec + Start 24: default_build_coverage::threadx_event_flag_suspension_timeout_test + 24/107 Test #24: default_build_coverage::threadx_event_flag_suspension_timeout_test .................. Passed 0.68 sec + Start 25: default_build_coverage::threadx_event_flag_thread_terminate_test + 25/107 Test #25: default_build_coverage::threadx_event_flag_thread_terminate_test .................... Passed 0.01 sec + Start 26: default_build_coverage::threadx_interrupt_control_test + 26/107 Test #26: default_build_coverage::threadx_interrupt_control_test .............................. Passed 0.03 sec + Start 27: default_build_coverage::threadx_mutex_basic_test + 27/107 Test #27: default_build_coverage::threadx_mutex_basic_test .................................... Passed 0.09 sec + Start 28: default_build_coverage::threadx_mutex_delete_test + 28/107 Test #28: default_build_coverage::threadx_mutex_delete_test ................................... Passed 0.01 sec + Start 29: default_build_coverage::threadx_mutex_information_test + 29/107 Test #29: default_build_coverage::threadx_mutex_information_test .............................. Passed 0.01 sec + Start 30: default_build_coverage::threadx_mutex_nested_priority_inheritance_test + 30/107 Test #30: default_build_coverage::threadx_mutex_nested_priority_inheritance_test .............. Passed 0.10 sec + Start 31: default_build_coverage::threadx_mutex_no_preemption_test + 31/107 Test #31: default_build_coverage::threadx_mutex_no_preemption_test ............................ Passed 0.01 sec + Start 32: default_build_coverage::threadx_mutex_preemption_test + 32/107 Test #32: default_build_coverage::threadx_mutex_preemption_test ............................... Passed 0.01 sec + Start 33: default_build_coverage::threadx_mutex_priority_inheritance_test + 33/107 Test #33: default_build_coverage::threadx_mutex_priority_inheritance_test ..................... Passed 0.21 sec + Start 34: default_build_coverage::threadx_mutex_proritize_test + 34/107 Test #34: default_build_coverage::threadx_mutex_proritize_test ................................ Passed 0.03 sec + Start 35: default_build_coverage::threadx_mutex_suspension_timeout_test + 35/107 Test #35: default_build_coverage::threadx_mutex_suspension_timeout_test ....................... Passed 0.37 sec + Start 36: default_build_coverage::threadx_mutex_thread_terminate_test + 36/107 Test #36: default_build_coverage::threadx_mutex_thread_terminate_test ......................... Passed 0.01 sec + Start 37: default_build_coverage::threadx_queue_basic_eight_word_test + 37/107 Test #37: default_build_coverage::threadx_queue_basic_eight_word_test ......................... Passed 0.00 sec + Start 38: default_build_coverage::threadx_queue_basic_four_word_test + 38/107 Test #38: default_build_coverage::threadx_queue_basic_four_word_test .......................... Passed 0.00 sec + Start 39: default_build_coverage::threadx_queue_basic_one_word_test + 39/107 Test #39: default_build_coverage::threadx_queue_basic_one_word_test ........................... Passed 0.07 sec + Start 40: default_build_coverage::threadx_queue_basic_sixteen_word_test + 40/107 Test #40: default_build_coverage::threadx_queue_basic_sixteen_word_test ....................... Passed 0.01 sec + Start 41: default_build_coverage::threadx_queue_basic_two_word_test + 41/107 Test #41: default_build_coverage::threadx_queue_basic_two_word_test ........................... Passed 0.00 sec + Start 42: default_build_coverage::threadx_queue_basic_max_message_size_test + 42/107 Test #42: default_build_coverage::threadx_queue_basic_max_message_size_test ................... Passed 0.00 sec + Start 43: default_build_coverage::threadx_queue_empty_suspension_test + 43/107 Test #43: default_build_coverage::threadx_queue_empty_suspension_test ......................... Passed 0.01 sec + Start 44: default_build_coverage::threadx_queue_flush_no_suspension_test + 44/107 Test #44: default_build_coverage::threadx_queue_flush_no_suspension_test ...................... Passed 0.00 sec + Start 45: default_build_coverage::threadx_queue_flush_test + 45/107 Test #45: default_build_coverage::threadx_queue_flush_test .................................... Passed 0.01 sec + Start 46: default_build_coverage::threadx_queue_front_send_test + 46/107 Test #46: default_build_coverage::threadx_queue_front_send_test ............................... Passed 0.01 sec + Start 47: default_build_coverage::threadx_queue_full_suspension_test + 47/107 Test #47: default_build_coverage::threadx_queue_full_suspension_test .......................... Passed 0.01 sec + Start 48: default_build_coverage::threadx_queue_information_test + 48/107 Test #48: default_build_coverage::threadx_queue_information_test .............................. Passed 0.00 sec + Start 49: default_build_coverage::threadx_queue_prioritize + 49/107 Test #49: default_build_coverage::threadx_queue_prioritize .................................... Passed 0.03 sec + Start 50: default_build_coverage::threadx_queue_suspension_timeout_test + 50/107 Test #50: default_build_coverage::threadx_queue_suspension_timeout_test ....................... Passed 0.36 sec + Start 51: default_build_coverage::threadx_queue_thread_terminate_test + 51/107 Test #51: default_build_coverage::threadx_queue_thread_terminate_test ......................... Passed 0.01 sec + Start 52: default_build_coverage::threadx_semaphore_basic_test + 52/107 Test #52: default_build_coverage::threadx_semaphore_basic_test ................................ Passed 0.07 sec + Start 53: default_build_coverage::threadx_semaphore_ceiling_put_test + 53/107 Test #53: default_build_coverage::threadx_semaphore_ceiling_put_test .......................... Passed 0.01 sec + Start 54: default_build_coverage::threadx_semaphore_delete_test + 54/107 Test #54: default_build_coverage::threadx_semaphore_delete_test ............................... Passed 0.01 sec + Start 55: default_build_coverage::threadx_semaphore_information_test + 55/107 Test #55: default_build_coverage::threadx_semaphore_information_test .......................... Passed 0.00 sec + Start 56: default_build_coverage::threadx_semaphore_non_preemption_test + 56/107 Test #56: default_build_coverage::threadx_semaphore_non_preemption_test ....................... Passed 0.01 sec + Start 57: default_build_coverage::threadx_semaphore_preemption_test + 57/107 Test #57: default_build_coverage::threadx_semaphore_preemption_test ........................... Passed 0.01 sec + Start 58: default_build_coverage::threadx_semaphore_prioritize + 58/107 Test #58: default_build_coverage::threadx_semaphore_prioritize ................................ Passed 0.03 sec + Start 59: default_build_coverage::threadx_semaphore_thread_terminate_test + 59/107 Test #59: default_build_coverage::threadx_semaphore_thread_terminate_test ..................... Passed 0.01 sec + Start 60: default_build_coverage::threadx_semaphore_timeout_test + 60/107 Test #60: default_build_coverage::threadx_semaphore_timeout_test .............................. Passed 0.36 sec + Start 61: default_build_coverage::threadx_thread_basic_execution_test + 61/107 Test #61: default_build_coverage::threadx_thread_basic_execution_test ......................... Passed 0.05 sec + Start 62: default_build_coverage::threadx_thread_basic_time_slice_test + 62/107 Test #62: default_build_coverage::threadx_thread_basic_time_slice_test ........................ Passed 0.20 sec + Start 63: default_build_coverage::threadx_thread_completed_test + 63/107 Test #63: default_build_coverage::threadx_thread_completed_test ............................... Passed 0.02 sec + Start 64: default_build_coverage::threadx_thread_create_preemption_threshold_test + 64/107 Test #64: default_build_coverage::threadx_thread_create_preemption_threshold_test ............. Passed 0.03 sec + Start 65: default_build_coverage::threadx_thread_delayed_suspension_test + 65/107 Test #65: default_build_coverage::threadx_thread_delayed_suspension_test ...................... Passed 7.26 sec + Start 66: default_build_coverage::threadx_thread_information_test + 66/107 Test #66: default_build_coverage::threadx_thread_information_test ............................. Passed 0.01 sec + Start 67: default_build_coverage::threadx_thread_misaligned_stack_test + 67/107 Test #67: default_build_coverage::threadx_thread_misaligned_stack_test ........................ Passed 0.06 sec + Start 68: default_build_coverage::threadx_thread_multi_level_preemption_threshold_test + 68/107 Test #68: default_build_coverage::threadx_thread_multi_level_preemption_threshold_test ........ Passed 0.02 sec + Start 69: default_build_coverage::threadx_thread_multiple_non_current_test + 69/107 Test #69: default_build_coverage::threadx_thread_multiple_non_current_test .................... Passed 0.01 sec + Start 70: default_build_coverage::threadx_thread_multiple_sleep_test + 70/107 Test #70: default_build_coverage::threadx_thread_multiple_sleep_test .......................... Passed 1.02 sec + Start 71: default_build_coverage::threadx_thread_multiple_suspension_test + 71/107 Test #71: default_build_coverage::threadx_thread_multiple_suspension_test ..................... Passed 0.01 sec + Start 72: default_build_coverage::threadx_thread_multiple_time_slice_test + 72/107 Test #72: default_build_coverage::threadx_thread_multiple_time_slice_test ..................... Passed 0.54 sec + Start 73: default_build_coverage::threadx_thread_preemptable_suspension_test + 73/107 Test #73: default_build_coverage::threadx_thread_preemptable_suspension_test .................. Passed 0.01 sec + Start 74: default_build_coverage::threadx_thread_preemption_change_test + 74/107 Test #74: default_build_coverage::threadx_thread_preemption_change_test ....................... Passed 0.01 sec + Start 75: default_build_coverage::threadx_thread_priority_change + 75/107 Test #75: default_build_coverage::threadx_thread_priority_change .............................. Passed 0.18 sec + Start 76: default_build_coverage::threadx_thread_relinquish_test + 76/107 Test #76: default_build_coverage::threadx_thread_relinquish_test .............................. Passed 0.01 sec + Start 77: default_build_coverage::threadx_thread_reset_test + 77/107 Test #77: default_build_coverage::threadx_thread_reset_test ................................... Passed 0.01 sec + Start 78: default_build_coverage::threadx_thread_simple_sleep_non_clear_test + 78/107 Test #78: default_build_coverage::threadx_thread_simple_sleep_non_clear_test .................. Passed 0.20 sec + Start 79: default_build_coverage::threadx_thread_simple_sleep_test + 79/107 Test #79: default_build_coverage::threadx_thread_simple_sleep_test ............................ Passed 0.19 sec + Start 80: default_build_coverage::threadx_thread_simple_suspend_test + 80/107 Test #80: default_build_coverage::threadx_thread_simple_suspend_test .......................... Passed 0.00 sec + Start 81: default_build_coverage::threadx_thread_sleep_for_100ticks_test + 81/107 Test #81: default_build_coverage::threadx_thread_sleep_for_100ticks_test ...................... Passed 1.01 sec + Start 82: default_build_coverage::threadx_thread_sleep_terminate_test + 82/107 Test #82: default_build_coverage::threadx_thread_sleep_terminate_test ......................... Passed 0.05 sec + Start 83: default_build_coverage::threadx_thread_stack_checking_test + 83/107 Test #83: default_build_coverage::threadx_thread_stack_checking_test .......................... Passed 0.01 sec + Start 84: default_build_coverage::threadx_thread_stack_fill_value_test + 84/107 Test #84: default_build_coverage::threadx_thread_stack_fill_value_test ........................ Passed 0.01 sec + Start 85: default_build_coverage::threadx_thread_terminate_delete_test + 85/107 Test #85: default_build_coverage::threadx_thread_terminate_delete_test ........................ Passed 0.00 sec + Start 86: default_build_coverage::threadx_thread_exit_callback_transition_test + 86/107 Test #86: default_build_coverage::threadx_thread_exit_callback_transition_test ................ Passed 0.25 sec + Start 87: default_build_coverage::threadx_thread_time_slice_change_test + 87/107 Test #87: default_build_coverage::threadx_thread_time_slice_change_test ....................... Passed 0.10 sec + Start 88: default_build_coverage::threadx_thread_wait_abort_and_isr_test + 88/107 Test #88: default_build_coverage::threadx_thread_wait_abort_and_isr_test ...................... Passed 0.22 sec + Start 89: default_build_coverage::threadx_thread_wait_abort_test + 89/107 Test #89: default_build_coverage::threadx_thread_wait_abort_test .............................. Passed 0.01 sec + Start 90: default_build_coverage::threadx_time_get_set_test + 90/107 Test #90: default_build_coverage::threadx_time_get_set_test ................................... Passed 0.37 sec + Start 91: default_build_coverage::threadx_timer_activate_deactivate_test + 91/107 Test #91: default_build_coverage::threadx_timer_activate_deactivate_test ...................... Passed 0.86 sec + Start 92: default_build_coverage::threadx_timer_deactivate_accuracy_test + 92/107 Test #92: default_build_coverage::threadx_timer_deactivate_accuracy_test ...................... Passed 0.40 sec + Start 93: default_build_coverage::threadx_timer_information_test + 93/107 Test #93: default_build_coverage::threadx_timer_information_test .............................. Passed 1.61 sec + Start 94: default_build_coverage::threadx_timer_large_timer_accuracy_test + 94/107 Test #94: default_build_coverage::threadx_timer_large_timer_accuracy_test ..................... Passed 1.11 sec + Start 95: default_build_coverage::threadx_timer_multiple_accuracy_test + 95/107 Test #95: default_build_coverage::threadx_timer_multiple_accuracy_test ........................ Passed 3.05 sec + Start 96: default_build_coverage::threadx_timer_multiple_test + 96/107 Test #96: default_build_coverage::threadx_timer_multiple_test ................................. Passed 6.07 sec + Start 97: default_build_coverage::threadx_timer_simple_test + 97/107 Test #97: default_build_coverage::threadx_timer_simple_test ................................... Passed 1.65 sec + Start 98: default_build_coverage::threadx_trace_basic_test + 98/107 Test #98: default_build_coverage::threadx_trace_basic_test .................................... Passed 0.01 sec + Start 99: default_build_coverage::threadx_trace_entry_update_test + 99/107 Test #99: default_build_coverage::threadx_trace_entry_update_test ............................. Passed 0.05 sec + Start 100: default_build_coverage::threadx_initialize_kernel_setup_test +100/107 Test #100: default_build_coverage::threadx_initialize_kernel_setup_test ........................ Passed 0.00 sec + Start 101: default_build_coverage::threadx_thread_transition_ni_test +101/107 Test #101: default_build_coverage::threadx_thread_transition_ni_test ........................... Passed 0.00 sec + Start 102: default_build_coverage::threadx_thread_transition_ni_no_error_checking_test +102/107 Test #102: default_build_coverage::threadx_thread_transition_ni_no_error_checking_test ......... Passed 0.00 sec + Start 103: default_build_coverage::threadx_thread_transition_ni_no_notify_test +103/107 Test #103: default_build_coverage::threadx_thread_transition_ni_no_notify_test ................. Passed 0.00 sec + Start 104: default_build_coverage::threadx_thread_transition_no_error_checking_test +104/107 Test #104: default_build_coverage::threadx_thread_transition_no_error_checking_test ............ Passed 0.00 sec + Start 105: default_build_coverage::threadx_module_manager_thread_kernel_stack_test +105/107 Test #105: default_build_coverage::threadx_module_manager_thread_kernel_stack_test ............. Passed 0.00 sec + Start 106: default_build_coverage::threadx_module_manager_object_authentication_test +106/107 Test #106: default_build_coverage::threadx_module_manager_object_authentication_test ........... Passed 0.00 sec + Start 107: default_build_coverage::threadx_module_manager_delete_ownership_test +107/107 Test #107: default_build_coverage::threadx_module_manager_delete_ownership_test ................ Passed 0.00 sec + +100% tests passed out of 107 + +Total Test time (real) = 34.26 sec +CTEST_RC=0 diff --git a/test/tx/cmake/module_manager/CMakeLists.txt b/test/tx/cmake/module_manager/CMakeLists.txt index 695a1fe5..cfc0835c 100644 --- a/test/tx/cmake/module_manager/CMakeLists.txt +++ b/test/tx/cmake/module_manager/CMakeLists.txt @@ -127,3 +127,29 @@ target_compile_options( add_test(${CMAKE_BUILD_TYPE}::threadx_module_manager_delete_ownership_test threadx_module_manager_delete_ownership_test) + +# This test drives the allocation and deallocation services directly rather than +# through a dispatcher, so it needs none of the dispatch table and no guard list. +add_executable( + threadx_module_manager_live_object_deallocation_test + ${SOURCE_DIR}/threadx_module_manager_live_object_deallocation_test.c + ${module_manager_dir}/src/txm_module_manager_util.c + ${module_manager_dir}/src/txm_module_manager_object_allocate.c + ${module_manager_dir}/src/txm_module_manager_object_deallocate.c) + +target_include_directories( + threadx_module_manager_live_object_deallocation_test + PRIVATE ${SOURCE_DIR} + ${REPO_ROOT}/common/inc + ${REPO_ROOT}/common_modules/inc + ${module_manager_dir}/inc + ${cortex_a7_module_dir}/inc) + +target_compile_options( + threadx_module_manager_live_object_deallocation_test + PRIVATE -Wall + -Wextra + -include ${SOURCE_DIR}/threadx_module_manager_host_test_port.h) + +add_test(${CMAKE_BUILD_TYPE}::threadx_module_manager_live_object_deallocation_test + threadx_module_manager_live_object_deallocation_test) diff --git a/test/tx/module_manager/threadx_module_manager_live_object_deallocation_test.c b/test/tx/module_manager/threadx_module_manager_live_object_deallocation_test.c new file mode 100644 index 00000000..3eaf95c6 --- /dev/null +++ b/test/tx/module_manager/threadx_module_manager_live_object_deallocation_test.c @@ -0,0 +1,1223 @@ +/*************************************************************************** + * Copyright (c) 2026 Eclipse ThreadX contributors + * + * This program and the accompanying materials are made available under the + * terms of the MIT License which is available at + * https://opensource.org/licenses/MIT. + * + * AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5). + * The AI-generated portions may be considered public domain (CC0-1.0) + * and not subject to the project's licence. The human contributor has + * reviewed and verified that the code is correct. + * + * SPDX-License-Identifier: MIT and CC0-1.0 + **************************************************************************/ + + +/**************************************************************************/ +/**************************************************************************/ +/** */ +/** ThreadX Test */ +/** */ +/** Module Manager live kernel object deallocation */ +/** */ +/**************************************************************************/ +/**************************************************************************/ + +/* A module allocates the memory for its kernel objects from the Module Manager's + object pool, and can ask for that memory back by address. The manager gave that + memory back whatever was in it, including a control block the kernel was still + using: the object stays on the created list for its type, a thread stays on the + ready or suspension list it was on and stays schedulable, and an active timer + stays on the timer list. None of those consult a control block ID, so nothing + about the freed memory stops the kernel reading a name pointer out of it, + writing through the created links in it, restoring a context from the stack + pointer in it, or calling the timeout function pointer in it -- while the byte + pool is free to have handed those same bytes to the next allocation. + + The manager now refuses to release the memory of an object that is still + created, and answers the question from the kernel's created lists rather than + from the control block, because a control block is not evidence: an allocation + that was never made into an object can carry the value of an ID, and objects of + distinct types share a size. + + This test drives that refusal on the host. The object pool behind it is + modelled -- a bump allocator that hands back the block it most recently + released, so that the address of a freed object can be seen to come back -- but + the two records the manager consults are built the way the system builds them: + the module allocation list by running the real + _txm_module_manager_object_allocate, and the kernel created lists the way the + create and delete services maintain them. + + What the test asserts is that memory is given back when, and only when, no live + kernel object is in it: refused for every one of the eight object types, and + still released for storage that was never created, for storage carrying nothing + but a plausible ID, and for an object that has been deleted -- which is the + release the delete dispatchers perform, and the one this must not break. */ + +#include + +#include "threadx_module_manager_host_test_port.h" + +#include "tx_thread.h" +#include "tx_timer.h" +#include "tx_queue.h" +#include "tx_event_flags.h" +#include "tx_semaphore.h" +#include "tx_mutex.h" +#include "tx_block_pool.h" +#include "tx_byte_pool.h" +#include "txm_module.h" +#include "txm_module_manager_util.h" + + +/* Define the stand-in interrupt lock the port shim counts through. */ + +unsigned int test_interrupt_disable_depth; +unsigned int test_interrupt_disable_max_depth; +unsigned int test_interrupt_restore_underflows; + + +/* Define the modelled object pool. */ + +#define TEST_POOL_BYTES ((ULONG) 8192) +#define TEST_MODULE_MEMORY_BYTES 512U + +static union +{ + ALIGN_TYPE test_pool_alignment; + UCHAR test_pool_bytes[TEST_POOL_BYTES]; +} test_pool_arena; + +static ULONG test_pool_offset; + + +/* Define the memory that stands for the calling module's own code and data. */ + +static union +{ + ALIGN_TYPE test_data_alignment; + UCHAR test_data_bytes[TEST_MODULE_MEMORY_BYTES]; +} test_module_data; + +static union +{ + ALIGN_TYPE test_code_alignment; + UCHAR test_code_bytes[TEST_MODULE_MEMORY_BYTES]; +} test_module_code; + + +/* Define an object that stands for one the application owns and shared with a + module. It lives outside the pool, so the manager has no allocation record of + it and the kernel created list is the only record of it there is. */ + +static TX_QUEUE test_host_queue; + + +/* Define the thread that stands for the module thread making the request. The + manager takes the calling module from it. */ + +static TX_THREAD test_current_thread; + + +/* Define the block the modelled pool most recently released, so that a later + allocation of the same size lands on the address a freed object had, and so + that a case can see whether anything was released at all. */ + +static UCHAR *test_released_start; +static ULONG test_released_bytes; +static ULONG test_releases; + + +/* Define the manager state the code under test reaches for. */ + +TX_BYTE_POOL _txm_module_manager_object_pool; +UINT _txm_module_manager_object_pool_created; +TX_MUTEX _txm_module_manager_mutex; +TX_THREAD *_tx_thread_current_ptr; + + +/* Define the kernel created lists the liveness check walks. */ + +TX_BLOCK_POOL *_tx_block_pool_created_ptr; +ULONG _tx_block_pool_created_count; +TX_BYTE_POOL *_tx_byte_pool_created_ptr; +ULONG _tx_byte_pool_created_count; +TX_EVENT_FLAGS_GROUP *_tx_event_flags_created_ptr; +ULONG _tx_event_flags_created_count; +TX_MUTEX *_tx_mutex_created_ptr; +ULONG _tx_mutex_created_count; +TX_QUEUE *_tx_queue_created_ptr; +ULONG _tx_queue_created_count; +TX_SEMAPHORE *_tx_semaphore_created_ptr; +ULONG _tx_semaphore_created_count; +TX_THREAD *_tx_thread_created_ptr; +ULONG _tx_thread_created_count; +TX_TIMER *_tx_timer_created_ptr; +ULONG _tx_timer_created_count; + + +static UINT test_failures; +static ULONG test_checks; + + +/* Record the outcome of one expectation. */ +static VOID test_expect(const char *description, ULONG actual, ULONG expected) +{ + test_checks++; + + if (actual != expected) + { + printf("FAIL: %s (expected %lu, got %lu)\n", description, (unsigned long) expected, (unsigned long) actual); + test_failures++; + } +} + + +/* Report every module object type the manager knows, and the name, control block + size and control block ID of each, so that the cases below can be written once + and run against all of them. */ + +typedef struct TEST_OBJECT_KIND_STRUCT +{ + UINT test_kind_type; + const char *test_kind_name; + ULONG test_kind_size; + ULONG test_kind_id; +} TEST_OBJECT_KIND; + +static const TEST_OBJECT_KIND test_object_kinds[] = +{ + { TXM_BLOCK_POOL_OBJECT, "block pool", (ULONG) sizeof(TX_BLOCK_POOL), TX_BLOCK_POOL_ID }, + { TXM_BYTE_POOL_OBJECT, "byte pool", (ULONG) sizeof(TX_BYTE_POOL), TX_BYTE_POOL_ID }, + { TXM_EVENT_FLAGS_OBJECT, "event flags", (ULONG) sizeof(TX_EVENT_FLAGS_GROUP), TX_EVENT_FLAGS_ID }, + { TXM_MUTEX_OBJECT, "mutex", (ULONG) sizeof(TX_MUTEX), TX_MUTEX_ID }, + { TXM_QUEUE_OBJECT, "queue", (ULONG) sizeof(TX_QUEUE), TX_QUEUE_ID }, + { TXM_SEMAPHORE_OBJECT, "semaphore", (ULONG) sizeof(TX_SEMAPHORE), TX_SEMAPHORE_ID }, + { TXM_THREAD_OBJECT, "thread", (ULONG) sizeof(TX_THREAD), TX_THREAD_ID }, + { TXM_TIMER_OBJECT, "timer", (ULONG) sizeof(TX_TIMER), TX_TIMER_ID } +}; + +#define TEST_OBJECT_KIND_COUNT (sizeof(test_object_kinds) / sizeof(test_object_kinds[0])) + + +/* Round a request up the way _tx_byte_allocate does. */ +static ULONG test_round_up(ULONG memory_size) +{ + return((((memory_size + ((ULONG) sizeof(ALIGN_TYPE))) - ((ULONG) 1)) / ((ULONG) sizeof(ALIGN_TYPE))) * ((ULONG) sizeof(ALIGN_TYPE))); +} + + +/* Stand in for the byte pool the manager allocates object memory from. + + The two size bounds are the real ones. The placement is a bump allocator with + one refinement: a request that exactly fits the block most recently released is + given that block back. A first-fit byte pool reuses freed memory, and the cases + about an address that has been released need the address to actually come back. */ +UINT _txe_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option) +{ + +ULONG rounded_size; +UCHAR *block_start; + + + (VOID) wait_option; + + if ((pool_ptr != &_txm_module_manager_object_pool) || (memory_ptr == TX_NULL)) + { + return(TX_POOL_ERROR); + } + + if (memory_size == ((ULONG) 0)) + { + return(TX_SIZE_ERROR); + } + + if (memory_size > pool_ptr -> tx_byte_pool_size) + { + return(TX_SIZE_ERROR); + } + + rounded_size = test_round_up(memory_size); + + if ((test_released_start != TX_NULL) && (test_released_bytes == rounded_size)) + { + block_start = test_released_start; + test_released_start = TX_NULL; + test_released_bytes = ((ULONG) 0); + } + else + { + if ((test_pool_offset + rounded_size) > TEST_POOL_BYTES) + { + return(TX_NO_MEMORY); + } + + block_start = &test_pool_arena.test_pool_bytes[test_pool_offset]; + test_pool_offset = test_pool_offset + rounded_size; + } + + pool_ptr -> tx_byte_pool_available = pool_ptr -> tx_byte_pool_available - rounded_size; + + *memory_ptr = (VOID *) block_start; + + return(TX_SUCCESS); +} + + +/* Stand in for the release side, remembering the block so it can come back, and + counting releases so that a case can see whether one happened. */ +UINT _txe_byte_release(VOID *memory_ptr) +{ + +UCHAR *block_start; + + + block_start = (UCHAR *) memory_ptr; + + if ((block_start < test_pool_arena.test_pool_bytes) || + (block_start >= &test_pool_arena.test_pool_bytes[TEST_POOL_BYTES])) + { + return(TX_PTR_ERROR); + } + + test_releases++; + + /* The model does not track block lengths, and the only released block a case + needs to come back is the one it just released, whose length it knows. The + length is recorded by the caller through test_release_size. */ + test_released_start = block_start; + + return(TX_SUCCESS); +} + + +/* Tell the model how long the block just released was. */ +static VOID test_release_size(ULONG object_size) +{ + test_released_bytes = test_round_up(object_size + ((ULONG) sizeof(TXM_MODULE_ALLOCATED_OBJECT))); +} + + +/* Stand in for the protection mutex. */ +UINT _txe_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option) +{ + (VOID) mutex_ptr; + (VOID) wait_option; + + return(TX_SUCCESS); +} + + +UINT _txe_mutex_put(TX_MUTEX *mutex_ptr) +{ + (VOID) mutex_ptr; + + return(TX_SUCCESS); +} + + +/* Stand in for the module port's data range check. */ +UINT _txm_module_manager_inside_data_check(ULONG obj_ptr) +{ + +ULONG data_start; +ULONG data_end; + + + data_start = (ULONG) (ALIGN_TYPE) test_module_data.test_data_bytes; + data_end = data_start + ((ULONG) TEST_MODULE_MEMORY_BYTES); + + if ((obj_ptr >= data_start) && (obj_ptr < data_end)) + { + return(TX_TRUE); + } + + return(TX_FALSE); +} + + +/* Stand in for the port primitive a manager source under test refers to but that + no case here exercises. */ +VOID _txm_module_manager_alignment_adjust(TXM_MODULE_PREAMBLE *module_preamble, ULONG *code_size, + ULONG *code_alignment, ULONG *data_size, ULONG *data_alignment) +{ + (VOID) module_preamble; + (VOID) code_size; + (VOID) code_alignment; + (VOID) data_size; + (VOID) data_alignment; +} + + +/* Do to an object what the kernel's create service does: write the control block + ID, and link the object onto the created list for its type. + + The chain each list is built as ends in a self-link on its oldest member rather + than closing back on the head, so that a walk bounded by the created count + visits every member and a walk that ignored the count would not run off the + end. What is being tested is the bound, not the model. */ +static VOID test_object_create(VOID *object_ptr, UINT object_type) +{ + switch (object_type) + { + + case TXM_BLOCK_POOL_OBJECT: + { + TX_BLOCK_POOL *block_pool_ptr = (TX_BLOCK_POOL *) object_ptr; + + block_pool_ptr -> tx_block_pool_id = TX_BLOCK_POOL_ID; + block_pool_ptr -> tx_block_pool_created_next = (_tx_block_pool_created_ptr == TX_NULL) ? block_pool_ptr : _tx_block_pool_created_ptr; + _tx_block_pool_created_ptr = block_pool_ptr; + _tx_block_pool_created_count++; + break; + } + + case TXM_BYTE_POOL_OBJECT: + { + TX_BYTE_POOL *byte_pool_ptr = (TX_BYTE_POOL *) object_ptr; + + byte_pool_ptr -> tx_byte_pool_id = TX_BYTE_POOL_ID; + byte_pool_ptr -> tx_byte_pool_created_next = (_tx_byte_pool_created_ptr == TX_NULL) ? byte_pool_ptr : _tx_byte_pool_created_ptr; + _tx_byte_pool_created_ptr = byte_pool_ptr; + _tx_byte_pool_created_count++; + break; + } + + case TXM_EVENT_FLAGS_OBJECT: + { + TX_EVENT_FLAGS_GROUP *event_flags_ptr = (TX_EVENT_FLAGS_GROUP *) object_ptr; + + event_flags_ptr -> tx_event_flags_group_id = TX_EVENT_FLAGS_ID; + event_flags_ptr -> tx_event_flags_group_created_next = (_tx_event_flags_created_ptr == TX_NULL) ? event_flags_ptr : _tx_event_flags_created_ptr; + _tx_event_flags_created_ptr = event_flags_ptr; + _tx_event_flags_created_count++; + break; + } + + case TXM_MUTEX_OBJECT: + { + TX_MUTEX *mutex_ptr = (TX_MUTEX *) object_ptr; + + mutex_ptr -> tx_mutex_id = TX_MUTEX_ID; + mutex_ptr -> tx_mutex_created_next = (_tx_mutex_created_ptr == TX_NULL) ? mutex_ptr : _tx_mutex_created_ptr; + _tx_mutex_created_ptr = mutex_ptr; + _tx_mutex_created_count++; + break; + } + + case TXM_QUEUE_OBJECT: + { + TX_QUEUE *queue_ptr = (TX_QUEUE *) object_ptr; + + queue_ptr -> tx_queue_id = TX_QUEUE_ID; + queue_ptr -> tx_queue_created_next = (_tx_queue_created_ptr == TX_NULL) ? queue_ptr : _tx_queue_created_ptr; + _tx_queue_created_ptr = queue_ptr; + _tx_queue_created_count++; + break; + } + + case TXM_SEMAPHORE_OBJECT: + { + TX_SEMAPHORE *semaphore_ptr = (TX_SEMAPHORE *) object_ptr; + + semaphore_ptr -> tx_semaphore_id = TX_SEMAPHORE_ID; + semaphore_ptr -> tx_semaphore_created_next = (_tx_semaphore_created_ptr == TX_NULL) ? semaphore_ptr : _tx_semaphore_created_ptr; + _tx_semaphore_created_ptr = semaphore_ptr; + _tx_semaphore_created_count++; + break; + } + + case TXM_THREAD_OBJECT: + { + TX_THREAD *thread_ptr = (TX_THREAD *) object_ptr; + + thread_ptr -> tx_thread_id = TX_THREAD_ID; + thread_ptr -> tx_thread_created_next = (_tx_thread_created_ptr == TX_NULL) ? thread_ptr : _tx_thread_created_ptr; + _tx_thread_created_ptr = thread_ptr; + _tx_thread_created_count++; + break; + } + + case TXM_TIMER_OBJECT: + default: + { + TX_TIMER *timer_ptr = (TX_TIMER *) object_ptr; + + timer_ptr -> tx_timer_id = TX_TIMER_ID; + timer_ptr -> tx_timer_created_next = (_tx_timer_created_ptr == TX_NULL) ? timer_ptr : _tx_timer_created_ptr; + _tx_timer_created_ptr = timer_ptr; + _tx_timer_created_count++; + break; + } + } +} + + +/* Do to an object what the kernel's delete service does: clear the control block + ID, and take the object off the created list for its type. + + Every case that deletes has one object of that type on the list, which is the + shape that matters here, so the model empties the list rather than unlinking a + member of a longer one. */ +static VOID test_object_delete(VOID *object_ptr, UINT object_type) +{ + switch (object_type) + { + + case TXM_BLOCK_POOL_OBJECT: + + ((TX_BLOCK_POOL *) object_ptr) -> tx_block_pool_id = TX_CLEAR_ID; + _tx_block_pool_created_ptr = TX_NULL; + _tx_block_pool_created_count = ((ULONG) 0); + break; + + case TXM_BYTE_POOL_OBJECT: + + ((TX_BYTE_POOL *) object_ptr) -> tx_byte_pool_id = TX_CLEAR_ID; + _tx_byte_pool_created_ptr = TX_NULL; + _tx_byte_pool_created_count = ((ULONG) 0); + break; + + case TXM_EVENT_FLAGS_OBJECT: + + ((TX_EVENT_FLAGS_GROUP *) object_ptr) -> tx_event_flags_group_id = TX_CLEAR_ID; + _tx_event_flags_created_ptr = TX_NULL; + _tx_event_flags_created_count = ((ULONG) 0); + break; + + case TXM_MUTEX_OBJECT: + + ((TX_MUTEX *) object_ptr) -> tx_mutex_id = TX_CLEAR_ID; + _tx_mutex_created_ptr = TX_NULL; + _tx_mutex_created_count = ((ULONG) 0); + break; + + case TXM_QUEUE_OBJECT: + + ((TX_QUEUE *) object_ptr) -> tx_queue_id = TX_CLEAR_ID; + _tx_queue_created_ptr = TX_NULL; + _tx_queue_created_count = ((ULONG) 0); + break; + + case TXM_SEMAPHORE_OBJECT: + + ((TX_SEMAPHORE *) object_ptr) -> tx_semaphore_id = TX_CLEAR_ID; + _tx_semaphore_created_ptr = TX_NULL; + _tx_semaphore_created_count = ((ULONG) 0); + break; + + case TXM_THREAD_OBJECT: + + ((TX_THREAD *) object_ptr) -> tx_thread_id = TX_CLEAR_ID; + _tx_thread_created_ptr = TX_NULL; + _tx_thread_created_count = ((ULONG) 0); + break; + + case TXM_TIMER_OBJECT: + default: + + ((TX_TIMER *) object_ptr) -> tx_timer_id = TX_CLEAR_ID; + _tx_timer_created_ptr = TX_NULL; + _tx_timer_created_count = ((ULONG) 0); + break; + } +} + + +/* Break the created list for a type after its first member, and tell the kernel it + is longer than it is. A search bounded only by the count would run off the end of + the chain; this is what makes the second bound observable for every type. */ +static VOID test_object_orphan(VOID *object_ptr, UINT object_type) +{ + switch (object_type) + { + + case TXM_BLOCK_POOL_OBJECT: + + ((TX_BLOCK_POOL *) object_ptr) -> tx_block_pool_created_next = TX_NULL; + _tx_block_pool_created_count = ((ULONG) 64); + break; + + case TXM_BYTE_POOL_OBJECT: + + ((TX_BYTE_POOL *) object_ptr) -> tx_byte_pool_created_next = TX_NULL; + _tx_byte_pool_created_count = ((ULONG) 64); + break; + + case TXM_EVENT_FLAGS_OBJECT: + + ((TX_EVENT_FLAGS_GROUP *) object_ptr) -> tx_event_flags_group_created_next = TX_NULL; + _tx_event_flags_created_count = ((ULONG) 64); + break; + + case TXM_MUTEX_OBJECT: + + ((TX_MUTEX *) object_ptr) -> tx_mutex_created_next = TX_NULL; + _tx_mutex_created_count = ((ULONG) 64); + break; + + case TXM_QUEUE_OBJECT: + + ((TX_QUEUE *) object_ptr) -> tx_queue_created_next = TX_NULL; + _tx_queue_created_count = ((ULONG) 64); + break; + + case TXM_SEMAPHORE_OBJECT: + + ((TX_SEMAPHORE *) object_ptr) -> tx_semaphore_created_next = TX_NULL; + _tx_semaphore_created_count = ((ULONG) 64); + break; + + case TXM_THREAD_OBJECT: + + ((TX_THREAD *) object_ptr) -> tx_thread_created_next = TX_NULL; + _tx_thread_created_count = ((ULONG) 64); + break; + + case TXM_TIMER_OBJECT: + default: + + ((TX_TIMER *) object_ptr) -> tx_timer_created_next = TX_NULL; + _tx_timer_created_count = ((ULONG) 64); + break; + } +} + + +/* Read the control block ID word of an object. */ +static ULONG test_object_id(VOID *object_ptr) +{ + return(*((ULONG *) object_ptr)); +} + + +/* Plant a value at an offset into an allocation, and report what was there. */ +static ULONG test_plant(VOID *object_ptr, ULONG offset, ULONG value) +{ + +ULONG *word_ptr; +ULONG previous; + + + word_ptr = (ULONG *) (VOID *) (((UCHAR *) object_ptr) + offset); + previous = *word_ptr; + *word_ptr = value; + + return(previous); +} + + +/* Bring the pool, the created lists and the modules back to a known state. + + Everything is reset together deliberately. The allocation lists point into the + pool and the created lists point at objects in it, so a case that left either + behind would have the next case reading the wreckage of an earlier one rather + than what it was written to check. */ +static VOID test_reset(TXM_MODULE_INSTANCE *module_a, TXM_MODULE_INSTANCE *module_b) +{ + +UINT index; + + + for (index = 0U; index < (UINT) TEST_POOL_BYTES; index++) + { + test_pool_arena.test_pool_bytes[index] = (UCHAR) 0; + } + + for (index = 0U; index < TEST_MODULE_MEMORY_BYTES; index++) + { + test_module_data.test_data_bytes[index] = (UCHAR) 0; + test_module_code.test_code_bytes[index] = (UCHAR) 0; + } + + test_pool_offset = ((ULONG) 0); + test_released_start = TX_NULL; + test_released_bytes = ((ULONG) 0); + test_releases = ((ULONG) 0); + + _txm_module_manager_object_pool.tx_byte_pool_id = TX_BYTE_POOL_ID; + _txm_module_manager_object_pool.tx_byte_pool_start = test_pool_arena.test_pool_bytes; + _txm_module_manager_object_pool.tx_byte_pool_size = TEST_POOL_BYTES; + _txm_module_manager_object_pool.tx_byte_pool_available = TEST_POOL_BYTES; + _txm_module_manager_object_pool_created = TX_TRUE; + + _tx_block_pool_created_ptr = TX_NULL; + _tx_block_pool_created_count = ((ULONG) 0); + _tx_byte_pool_created_ptr = TX_NULL; + _tx_byte_pool_created_count = ((ULONG) 0); + _tx_event_flags_created_ptr = TX_NULL; + _tx_event_flags_created_count = ((ULONG) 0); + _tx_mutex_created_ptr = TX_NULL; + _tx_mutex_created_count = ((ULONG) 0); + _tx_queue_created_ptr = TX_NULL; + _tx_queue_created_count = ((ULONG) 0); + _tx_semaphore_created_ptr = TX_NULL; + _tx_semaphore_created_count = ((ULONG) 0); + _tx_thread_created_ptr = TX_NULL; + _tx_thread_created_count = ((ULONG) 0); + _tx_timer_created_ptr = TX_NULL; + _tx_timer_created_count = ((ULONG) 0); + + module_a -> txm_module_instance_object_list_count = ((ULONG) 0); + module_a -> txm_module_instance_object_list_head = TX_NULL; + module_b -> txm_module_instance_object_list_count = ((ULONG) 0); + module_b -> txm_module_instance_object_list_head = TX_NULL; + + /* The requesting thread belongs to module A throughout. It is not in the pool + and not on a created list, so it is nothing the cases below can find. */ + test_current_thread.tx_thread_module_instance_ptr = module_a; + _tx_thread_current_ptr = &test_current_thread; +} + + +/* Allocate object memory for a module through the real manager path. */ +static VOID *test_allocate(TXM_MODULE_INSTANCE *module_instance, ULONG object_size) +{ + +VOID *object_ptr; +UINT status; + + + object_ptr = TX_NULL; + status = _txm_module_manager_object_allocate(&object_ptr, object_size, module_instance); + + if (status != TX_SUCCESS) + { + printf("FAIL: the modelled pool refused an allocation of %lu bytes (status %u)\n", + (unsigned long) object_size, status); + test_failures++; + + return(TX_NULL); + } + + return(object_ptr); +} + + +/* Allocate and create one object of a type, the way a module does. */ +static VOID *test_allocate_and_create(TXM_MODULE_INSTANCE *module_instance, const TEST_OBJECT_KIND *kind) +{ + +VOID *object_ptr; + + + object_ptr = test_allocate(module_instance, kind -> test_kind_size); + + if (object_ptr != TX_NULL) + { + test_object_create(object_ptr, kind -> test_kind_type); + } + + return(object_ptr); +} + + +/* Ask the manager to give an address back, and report what it said. Whatever it + decided, it must have left the interrupt lock as it found it. */ +static ULONG test_deallocate(VOID *object_ptr) +{ + +ULONG status; + + + test_interrupt_disable_depth = 0U; + test_interrupt_disable_max_depth = 0U; + test_interrupt_restore_underflows = 0U; + + status = (ULONG) _txm_module_manager_object_deallocate(object_ptr); + + if ((test_interrupt_disable_depth != 0U) || (test_interrupt_restore_underflows != 0U)) + { + printf("FAIL: deallocation left the interrupt lock unbalanced (depth %u, underflows %u)\n", + test_interrupt_disable_depth, test_interrupt_restore_underflows); + test_failures++; + } + + return(status); +} + + +/* Ask the manager whether a live kernel object is at an address, with the same + accounting. */ +static ULONG test_live_check(VOID *object_ptr) +{ + +ULONG status; + + + test_interrupt_disable_depth = 0U; + test_interrupt_disable_max_depth = 0U; + test_interrupt_restore_underflows = 0U; + + status = (ULONG) _txm_module_manager_live_object_check((ALIGN_TYPE) object_ptr); + + if ((test_interrupt_disable_depth != 0U) || (test_interrupt_restore_underflows != 0U)) + { + printf("FAIL: the liveness check left the interrupt lock unbalanced (depth %u, underflows %u)\n", + test_interrupt_disable_depth, test_interrupt_restore_underflows); + test_failures++; + } + + return(status); +} + + +int main(void) +{ + +TXM_MODULE_INSTANCE module_a; +TXM_MODULE_INSTANCE module_b; +const TEST_OBJECT_KIND *kind; +const TEST_OBJECT_KIND *other_kind; +VOID *object; +VOID *other_object; +VOID *raw_object; +VOID *reused_object; +ULONG index; +ULONG other_index; +ULONG saved; +ULONG status; +char description[160]; + + + /* Report expectations before anything can crash, so that a case that brings + the process down is still preceded by everything that passed. */ + setvbuf(stdout, TX_NULL, _IONBF, 0); + + test_failures = 0U; + test_checks = ((ULONG) 0); + + /* Set up two memory-protected modules. Module A does the asking throughout; + module B is there to own allocations A did not make. */ + module_a.txm_module_instance_property_flags = TXM_MODULE_MEMORY_PROTECTION; + module_a.txm_module_instance_code_start = (VOID *) test_module_code.test_code_bytes; + module_a.txm_module_instance_code_end = (VOID *) &test_module_code.test_code_bytes[TEST_MODULE_MEMORY_BYTES - 1U]; + module_a.txm_module_instance_data_start = (VOID *) test_module_data.test_data_bytes; + module_a.txm_module_instance_data_end = (VOID *) &test_module_data.test_data_bytes[TEST_MODULE_MEMORY_BYTES - 1U]; + + module_b = module_a; + + /**********************************************************************/ + /* The reported call: giving back the memory of a live object. */ + /**********************************************************************/ + + for (index = ((ULONG) 0); index < (ULONG) TEST_OBJECT_KIND_COUNT; index++) + { + kind = &test_object_kinds[index]; + + test_reset(&module_a, &module_b); + + object = test_allocate_and_create(&module_a, kind); + + (void) snprintf(description, sizeof(description), + "a live %s is on the created list before anything is asked", kind -> test_kind_name); + test_expect(description, test_live_check(object), (ULONG) TX_TRUE); + + /* The scan has to have run with interrupts disabled, which is the + protection the created lists are maintained under. */ + test_expect("...found with interrupts disabled, one deep", + (ULONG) test_interrupt_disable_max_depth, ((ULONG) 1)); + + status = test_deallocate(object); + + (void) snprintf(description, sizeof(description), + "the memory of a live %s is not given back", kind -> test_kind_name); + test_expect(description, status, (ULONG) TX_DELETE_ERROR); + + test_expect("...nothing was released to the pool", test_releases, ((ULONG) 0)); + + test_expect("...the allocation is still on the module's list", + module_a.txm_module_instance_object_list_count, ((ULONG) 1)); + + test_expect("...at the head of it", + (ULONG) (module_a.txm_module_instance_object_list_head == (((TXM_MODULE_ALLOCATED_OBJECT *) object) - 1)), + (ULONG) TX_TRUE); + + (void) snprintf(description, sizeof(description), + "...the %s still carries its control block ID", kind -> test_kind_name); + test_expect(description, test_object_id(object), kind -> test_kind_id); + + (void) snprintf(description, sizeof(description), + "...and is still a live %s", kind -> test_kind_name); + test_expect(description, test_live_check(object), (ULONG) TX_TRUE); + + /* Deleting it is what makes the memory releasable, and the release the + delete dispatchers perform after a successful delete then goes through. */ + test_object_delete(object, kind -> test_kind_type); + + (void) snprintf(description, sizeof(description), + "a deleted %s is no longer live", kind -> test_kind_name); + test_expect(description, test_live_check(object), (ULONG) TX_FALSE); + + test_release_size(kind -> test_kind_size); + status = test_deallocate(object); + + test_expect("and its memory is given back", status, (ULONG) TX_SUCCESS); + + test_expect("...leaving the module's allocation list empty", + module_a.txm_module_instance_object_list_count, ((ULONG) 0)); + + /* The address is free to come back now, which is what the kernel would + have been sharing with the next owner had the live object been freed. */ + reused_object = test_allocate(&module_a, kind -> test_kind_size); + + test_expect("...and the address free to be handed out again", + (ULONG) (reused_object == object), (ULONG) TX_TRUE); + } + + /**********************************************************************/ + /* Storage that is not an object is still released. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* An allocation that was never made into an object. This is what a module has + after a create that failed or was abandoned, and releasing it is the reason + the request exists at all. */ + raw_object = test_allocate(&module_a, (ULONG) sizeof(TX_QUEUE)); + + test_expect("an uncreated allocation holds no live object", + test_live_check(raw_object), (ULONG) TX_FALSE); + + test_release_size((ULONG) sizeof(TX_QUEUE)); + test_expect("and its memory is given back", + test_deallocate(raw_object), (ULONG) TX_SUCCESS); + test_expect("...leaving the module's allocation list empty", + module_a.txm_module_instance_object_list_count, ((ULONG) 0)); + + /* An allocation carrying nothing but the value of a control block ID. A + control block ID is not evidence that an object is there, and refusing on + one would strand memory a module is entitled to have back. */ + for (index = ((ULONG) 0); index < (ULONG) TEST_OBJECT_KIND_COUNT; index++) + { + kind = &test_object_kinds[index]; + + test_reset(&module_a, &module_b); + + raw_object = test_allocate(&module_a, kind -> test_kind_size); + (VOID) test_plant(raw_object, ((ULONG) 0), kind -> test_kind_id); + + (void) snprintf(description, sizeof(description), + "an uncreated allocation carrying a %s ID holds no live object", kind -> test_kind_name); + test_expect(description, test_live_check(raw_object), (ULONG) TX_FALSE); + + test_release_size(kind -> test_kind_size); + + test_expect("...and its memory is given back", + test_deallocate(raw_object), (ULONG) TX_SUCCESS); + } + + /**********************************************************************/ + /* The allocation size is not what decides it. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* A module running without memory protection creates objects through no + size-checked path, so an object can be at the start of an allocation far + larger than its control block. Deciding which created lists to search from + the size of the allocation would miss it. */ + object = test_allocate(&module_a, (ULONG) sizeof(TX_THREAD)); + test_object_create(object, TXM_QUEUE_OBJECT); + + test_expect("a queue at the start of a thread-sized allocation is live", + test_live_check(object), (ULONG) TX_TRUE); + test_expect("and the memory is not given back", + test_deallocate(object), (ULONG) TX_DELETE_ERROR); + test_expect("...with nothing released to the pool", test_releases, ((ULONG) 0)); + + /**********************************************************************/ + /* Only the exact address of an object counts. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + kind = &test_object_kinds[6]; + object = test_allocate_and_create(&module_a, kind); + + /* Every aligned interior offset of a live object, with that object's own ID + planted at the offset. None of them is the address of an object. */ + for (index = (ULONG) sizeof(ULONG); index < kind -> test_kind_size; index = index + ((ULONG) sizeof(ULONG))) + { + saved = test_plant(object, index, kind -> test_kind_id); + + (void) snprintf(description, sizeof(description), + "an address %lu bytes into a live thread holds no live object", (unsigned long) index); + test_expect(description, test_live_check((VOID *) (((UCHAR *) object) + index)), (ULONG) TX_FALSE); + + (VOID) test_plant(object, index, saved); + } + + test_expect("the address one past a live thread holds no live object", + test_live_check((VOID *) (((UCHAR *) object) + kind -> test_kind_size)), (ULONG) TX_FALSE); + + /**********************************************************************/ + /* Every type is searched, and each type only finds its own. */ + /**********************************************************************/ + + for (index = ((ULONG) 0); index < (ULONG) TEST_OBJECT_KIND_COUNT; index++) + { + kind = &test_object_kinds[index]; + + test_reset(&module_a, &module_b); + + /* One object of this type, and one allocation of every other type's size + that was never created. Only the created one is found, whatever ID the + others are carrying. */ + object = test_allocate_and_create(&module_a, kind); + + for (other_index = ((ULONG) 0); other_index < (ULONG) TEST_OBJECT_KIND_COUNT; other_index++) + { + if (other_index == index) + { + continue; + } + + other_kind = &test_object_kinds[other_index]; + other_object = test_allocate(&module_a, other_kind -> test_kind_size); + (VOID) test_plant(other_object, ((ULONG) 0), other_kind -> test_kind_id); + + (void) snprintf(description, sizeof(description), + "with a live %s created, an uncreated %s is not found", + kind -> test_kind_name, other_kind -> test_kind_name); + test_expect(description, test_live_check(other_object), (ULONG) TX_FALSE); + } + + (void) snprintf(description, sizeof(description), + "and the live %s is", kind -> test_kind_name); + test_expect(description, test_live_check(object), (ULONG) TX_TRUE); + } + + /**********************************************************************/ + /* Liveness is the kernel's record, not the pool's. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* An object the application created lives outside the pool, and the manager + has no allocation record of it. The kernel created list is the only record + there is, and it is the record this consults. */ + test_object_create(&test_host_queue, TXM_QUEUE_OBJECT); + + test_expect("an application-owned queue outside the pool is live", + test_live_check(&test_host_queue), (ULONG) TX_TRUE); + + test_object_delete(&test_host_queue, TXM_QUEUE_OBJECT); + + test_expect("and is not once it has been deleted", + test_live_check(&test_host_queue), (ULONG) TX_FALSE); + + /**********************************************************************/ + /* The bounds on the search. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* Three queues, and a created count that says one. A list whose links have + been damaged must not make the scan run past the count the kernel keeps + beside it. */ + object = test_allocate_and_create(&module_a, &test_object_kinds[4]); + other_object = test_allocate_and_create(&module_a, &test_object_kinds[4]); + raw_object = test_allocate_and_create(&module_a, &test_object_kinds[4]); + + test_expect("all three queues are on the list", _tx_queue_created_count, ((ULONG) 3)); + test_expect("the newest is found", test_live_check(raw_object), (ULONG) TX_TRUE); + test_expect("the oldest is found too", test_live_check(object), (ULONG) TX_TRUE); + + _tx_queue_created_count = ((ULONG) 1); + + test_expect("with the count saying one, the head is still found", + test_live_check(raw_object), (ULONG) TX_TRUE); + test_expect("...but the second member is not walked to", + test_live_check(other_object), (ULONG) TX_FALSE); + test_expect("...nor the third", + test_live_check(object), (ULONG) TX_FALSE); + + /* A count larger than the list. The walk has to stop at the end of the chain + as well as at the count. */ + _tx_queue_created_count = ((ULONG) 64); + ((TX_QUEUE *) raw_object) -> tx_queue_created_next = TX_NULL; + + test_expect("a count larger than the list does not run the scan off the end", + test_live_check(&test_host_queue), (ULONG) TX_FALSE); + + /* An empty list is the ordinary state of most types on most systems. */ + _tx_queue_created_ptr = TX_NULL; + _tx_queue_created_count = ((ULONG) 0); + + test_expect("nothing is live once every list is empty", + test_live_check(raw_object), (ULONG) TX_FALSE); + + /* The same bound, for every type: a chain that ends before the count does. */ + for (index = ((ULONG) 0); index < (ULONG) TEST_OBJECT_KIND_COUNT; index++) + { + kind = &test_object_kinds[index]; + + test_reset(&module_a, &module_b); + + object = test_allocate_and_create(&module_a, kind); + test_object_orphan(object, kind -> test_kind_type); + + (void) snprintf(description, sizeof(description), + "a %s list that ends before its count does not run the scan off the end", + kind -> test_kind_name); + test_expect(description, test_live_check(&test_host_queue), (ULONG) TX_FALSE); + + (void) snprintf(description, sizeof(description), + "...and the %s at its head is still found", kind -> test_kind_name); + test_expect(description, test_live_check(object), (ULONG) TX_TRUE); + } + + /**********************************************************************/ + /* Allocations belonging to another module. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* Module B's live object. Module A is refused, and the refusal is the + ownership one: whether A may operate on B's objects at all is a separate + question, and this request never reaches the liveness one. */ + object = test_allocate_and_create(&module_b, &test_object_kinds[5]); + + test_expect("module A cannot give back module B's live allocation", + test_deallocate(object), (ULONG) TX_PTR_ERROR); + test_expect("...and B's allocation list is untouched", + module_b.txm_module_instance_object_list_count, ((ULONG) 1)); + test_expect("...with nothing released to the pool", test_releases, ((ULONG) 0)); + + /* And B's uncreated storage, which A is refused for the same reason. */ + raw_object = test_allocate(&module_b, (ULONG) sizeof(TX_QUEUE)); + + test_expect("module A cannot give back module B's uncreated allocation", + test_deallocate(raw_object), (ULONG) TX_PTR_ERROR); + test_expect("...and B's allocation list still holds both", + module_b.txm_module_instance_object_list_count, ((ULONG) 2)); + + /* B can give its own uncreated storage back, so the ownership test has not + been turned into a refusal of everything. */ + test_current_thread.tx_thread_module_instance_ptr = &module_b; + + test_release_size((ULONG) sizeof(TX_QUEUE)); + test_expect("module B can give back its own uncreated allocation", + test_deallocate(raw_object), (ULONG) TX_SUCCESS); + test_expect("...but not its own live object", + test_deallocate(object), (ULONG) TX_DELETE_ERROR); + + test_current_thread.tx_thread_module_instance_ptr = &module_a; + + /**********************************************************************/ + /* An address that is not the start of one of this module's allocations.*/ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + object = test_allocate(&module_a, (ULONG) sizeof(TX_QUEUE)); + + /* An address inside an allocation names none of this module's allocations. + The search establishes that without reading the words in front of the + address, so an interior address is refused rather than taken for a header. */ + test_expect("an address inside an allocation is refused as naming no allocation", + test_deallocate((VOID *) (((UCHAR *) object) + sizeof(ULONG))), (ULONG) TX_PTR_ERROR); + + test_expect("...leaving the module's allocation list as it was", + module_a.txm_module_instance_object_list_count, ((ULONG) 1)); + + /**********************************************************************/ + /* Types the manager does not know. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + object = test_allocate_and_create(&module_a, &test_object_kinds[4]); + + /* The per-type check is asked directly here, because the search over the + types the manager knows can never present it with one it does not. A + kernel stack allocation is the case that exists: the manager allocates it + from the same pool and gives it a type of its own, and there is no created + list for it. */ + test_expect("a kernel stack is not a type with a created list", + (ULONG) _txm_module_manager_created_object_type_check((ALIGN_TYPE) object, + (UINT) TXM_THREAD_KERNEL_STACK_OBJECT), + (ULONG) TX_FALSE); + + test_expect("nor is a type of zero", + (ULONG) _txm_module_manager_created_object_type_check((ALIGN_TYPE) object, 0U), + (ULONG) TX_FALSE); + + test_expect("and the live queue is still found by the search", + test_live_check(object), (ULONG) TX_TRUE); + + /**********************************************************************/ + /* Releasing one allocation out of several. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + /* Allocations are appended behind the head, so the first one made is the + head. Releasing it has to move the head on rather than leave it pointing + at memory that has gone back to the pool. */ + object = test_allocate(&module_a, (ULONG) sizeof(TX_QUEUE)); + other_object = test_allocate(&module_a, (ULONG) sizeof(TX_QUEUE)); + + test_expect("the first allocation is the list head", + (ULONG) (module_a.txm_module_instance_object_list_head == (((TXM_MODULE_ALLOCATED_OBJECT *) object) - 1)), + (ULONG) TX_TRUE); + + test_release_size((ULONG) sizeof(TX_QUEUE)); + test_expect("releasing the head allocation succeeds", + test_deallocate(object), (ULONG) TX_SUCCESS); + test_expect("...leaving one allocation on the list", + module_a.txm_module_instance_object_list_count, ((ULONG) 1)); + test_expect("...and the head moved on to it", + (ULONG) (module_a.txm_module_instance_object_list_head == (((TXM_MODULE_ALLOCATED_OBJECT *) other_object) - 1)), + (ULONG) TX_TRUE); + + test_release_size((ULONG) sizeof(TX_QUEUE)); + test_expect("releasing the last allocation succeeds", + test_deallocate(other_object), (ULONG) TX_SUCCESS); + test_expect("...emptying the list", + module_a.txm_module_instance_object_list_count, ((ULONG) 0)); + test_expect("...and clearing its head", + (ULONG) (module_a.txm_module_instance_object_list_head == TX_NULL), (ULONG) TX_TRUE); + + /* Asking for the same address again. The header in front of it still names this + module, because nothing has overwritten it, so the empty allocation list is + what has to refuse the second release rather than the owner test. */ + test_expect("releasing the same address a second time is refused", + test_deallocate(other_object), (ULONG) TX_PTR_ERROR); + + /* An address with no room for a header in front of it anywhere in the address + space. The header pointer is null, and the address itself is never read. */ + test_expect("an address whose header would be at zero is refused", + test_deallocate((VOID *) ((ALIGN_TYPE) sizeof(TXM_MODULE_ALLOCATED_OBJECT))), + (ULONG) TX_PTR_ERROR); + + /**********************************************************************/ + /* An object pool that was never created. */ + /**********************************************************************/ + + test_reset(&module_a, &module_b); + + _txm_module_manager_object_pool_created = TX_FALSE; + + test_expect("and the deallocation reports the feature is not available", + test_deallocate((VOID *) test_pool_arena.test_pool_bytes), (ULONG) TX_NOT_AVAILABLE); + + _txm_module_manager_object_pool_created = TX_TRUE; + + /**********************************************************************/ + /* What the whole run has to have held. */ + /**********************************************************************/ + + test_expect("every case ran", (ULONG) (test_checks > ((ULONG) 100)), (ULONG) TX_TRUE); + + if (test_failures == 0U) + { + printf("SUCCESS! %lu expectations\n", (unsigned long) test_checks); + return(0); + } + + printf("ERROR: %u expectation(s) failed of %lu\n", test_failures, (unsigned long) test_checks); + return(1); +} diff --git a/test/tx/module_manager/threadx_module_manager_object_authentication_test.c b/test/tx/module_manager/threadx_module_manager_object_authentication_test.c index ca583956..576ed532 100644 --- a/test/tx/module_manager/threadx_module_manager_object_authentication_test.c +++ b/test/tx/module_manager/threadx_module_manager_object_authentication_test.c @@ -854,26 +854,33 @@ char description[128]; test_expect("a live queue is accepted before anything is given back", test_authenticate(&module_a, object, TXM_QUEUE_OBJECT), (ULONG) TX_TRUE); - /* Give the memory back without deleting the object first. The manager stops - vouching for the control block at the moment it stops owning the memory, so - the address is refused even though the created list has not been told. */ + /* Memory holding a live object is not given back at all. The object stays + created, the allocation stays owned, and the address stays authentic, so + the state this once had to defend against -- an object on the created list + whose memory the manager no longer owns -- cannot be reached. */ _tx_thread_current_ptr = (TX_THREAD *) test_allocate(&module_a, (ULONG) sizeof(TX_THREAD)); _tx_thread_current_ptr -> tx_thread_module_instance_ptr = &module_a; - test_release_size(kind -> test_kind_size); status = _txm_module_manager_object_deallocate(object); - test_expect("the object memory is given back", (ULONG) status, (ULONG) TX_SUCCESS); + test_expect("memory holding a live object is not given back", (ULONG) status, (ULONG) TX_DELETE_ERROR); + + test_expect("and the live object is still accepted afterwards", + test_authenticate(&module_a, object, TXM_QUEUE_OBJECT), (ULONG) TX_TRUE); - test_expect("an address whose memory was given back without a delete is refused", - test_authenticate(&module_a, object, TXM_QUEUE_OBJECT), (ULONG) TX_FALSE); + /* Deleted first, the same memory is given back, and the address comes round + again as a fresh, raw allocation. It is once again an exact allocation start + of the right size, and the ID of the object that used to be there can be + written back into it by the module that now owns it, so the created list is + the only thing that refuses it. */ + test_object_delete(object, kind -> test_kind_type); + test_release_size(kind -> test_kind_size); + status = _txm_module_manager_object_deallocate(object); + test_expect("a deleted object's memory is given back", (ULONG) status, (ULONG) TX_SUCCESS); - /* The same address now comes back as a fresh, raw allocation. It is once - again an exact allocation start of the right size, and it is still on the - created list, so nothing but the cleared ID stands between it and being - taken for the object that used to be there. */ raw_object = test_allocate(&module_a, kind -> test_kind_size); test_expect("the freed address is handed out again", (ULONG) (raw_object == object), (ULONG) TX_TRUE); + (VOID) test_plant(raw_object, ((ULONG) 0), kind -> test_kind_id); test_expect("and is not accepted as the object that used to be there", test_authenticate(&module_a, raw_object, TXM_QUEUE_OBJECT), (ULONG) TX_FALSE); -- cgit v1.3.1 From 83361990cb4d03da8851e30030688ed3abb4d840 Mon Sep 17 00:00:00 2001 From: Frédéric Desbiens Date: Mon, 28 Sep 2026 14:03:53 -0400 Subject: Normalized the AI disclosure comment and added a check that keeps it so (#762) * Normalized the AI disclosure line across every tracked file type The repository-wide pass covered source files only, so build files, CMake toolchain files, shell scripts and the GDB and manifest files kept the older per-edit form of the disclosure comment, which names a product and a model version. The Cortex-R52 module manager port then merged after that pass and brought the old form back into the sources as well. Replaced it with the fixed text in all of them, using the comment character each file already uses. Comment-only. 143 files, one line each. The repository now holds 601 files carrying exactly one disclosure line, none carrying the old form, and none carrying more than one. Assisted-by: Claude Code (Opus 5) * Added a check that keeps the AI disclosure comment in its one accepted form Nothing enforced the disclosure convention, so the drift it exists to prevent returned twice: once when a port merged after the normalisation pass carrying the older per-edit form, and once because that pass had covered source files only, leaving build files and scripts untouched for months. Added scripts/check_ai_disclosure.sh, which rejects the superseded per-edit form, a doubled comment marker, more than one disclosure line in a file, and any spelling of the line that is not exact. It runs from repo_checks.yml, a workflow with no path filter, because a source-path filter is what hid the build files the first time. The check passes on this branch. Each of its four rules was confirmed to fail on a tree with that defect reintroduced, and to pass once it was removed. Assisted-by: Claude Code (Opus 5) * Normalised the disclosure lines that landed after this branch Thirteen files reached dev after this branch was written, each carrying the superseded per-edit form. txm_module_manager_dispatch.h reached it with six stacked copies, naming the same product and the same model every time -- the accumulation the fixed text exists to prevent. Each of those files now carries one disclosure line in the accepted form. Where the accepted line was already present, the superseded ones are deleted rather than converted, so no file gains a second. check_ai_disclosure.sh reported eighteen hits across thirteen files before the pass and passes after it. Assisted-by: Claude Code (Opus 5) * Exempted Markdown from the near-miss disclosure check The near-miss rule flags any line carrying the phrase "AI assistance" that is not the accepted text, which is right for source but wrong for documentation. The contribution guide has to quote the accepted line and say when it applies, so the check reports two paragraphs of prose as drift and fails the build. Markdown is now exempt from that rule alone. The three rules that matter for a documentation file -- superseded form, doubled comment marker, duplicate line -- still scan it, so a stale disclosure in a Markdown file is still caught. The check passes against a tree carrying the rewritten contribution guide, and still fails when a near miss is planted in a source file. Assisted-by: Claude Code (Opus 5) * Corrected the trailer command named in the disclosure check The header comment points a reader at git's own trailer parser to find out which agents have touched a file. That parser reads trailers only from a block at the very end of a message, so a squash merge -- which concatenates a branch's messages -- buries every trailer but the last one mid-message, and an indented trailer is skipped outright. On dev it finds 122 attributions where 163 exist. The comment now names count_assisted_by.sh, which reads whole bodies. Assisted-by: Claude Code (Opus 5) --- .github/workflows/repo_checks.yml | 63 ++++++++++ cmake/aarch64-none-elf.cmake | 2 +- cmake/arm11.cmake | 2 +- cmake/arm9.cmake | 2 +- cmake/cortex_a12.cmake | 2 +- cmake/cortex_a15.cmake | 2 +- cmake/cortex_a17.cmake | 2 +- cmake/cortex_a34.cmake | 2 +- cmake/cortex_a35.cmake | 2 +- cmake/cortex_a5.cmake | 2 +- cmake/cortex_a53.cmake | 2 +- cmake/cortex_a55.cmake | 2 +- cmake/cortex_a57.cmake | 2 +- cmake/cortex_a5x.cmake | 2 +- cmake/cortex_a65.cmake | 2 +- cmake/cortex_a65ae.cmake | 2 +- cmake/cortex_a7.cmake | 2 +- cmake/cortex_a72.cmake | 2 +- cmake/cortex_a73.cmake | 2 +- cmake/cortex_a75.cmake | 2 +- cmake/cortex_a76.cmake | 2 +- cmake/cortex_a76ae.cmake | 2 +- cmake/cortex_a77.cmake | 2 +- cmake/cortex_a78.cmake | 2 +- cmake/cortex_a8.cmake | 2 +- cmake/cortex_m23.cmake | 2 +- cmake/cortex_m33.cmake | 2 +- cmake/cortex_m52.cmake | 2 +- cmake/cortex_m55.cmake | 2 +- cmake/cortex_m85.cmake | 2 +- cmake/cortex_r4.cmake | 2 +- cmake/cortex_r5.cmake | 2 +- cmake/cortex_r52.cmake | 2 +- cmake/cortex_r52_clang.cmake | 2 +- .../module_lib/src/txm_module_object_deallocate.c | 2 +- .../inc/txm_module_manager_dispatch.h | 12 -- .../module_manager/inc/txm_module_manager_util.h | 2 +- .../src/txm_module_manager_object_allocate.c | 2 +- .../src/txm_module_manager_object_deallocate.c | 2 +- .../src/txm_module_manager_thread_reset.c | 2 +- .../module_manager/src/txm_module_manager_util.c | 2 +- ports/arm11/gnu/CMakeLists.txt | 2 +- ports/arm11/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/arm9/gnu/CMakeLists.txt | 2 +- ports/arm9/gnu/example_build/build_threadx.sh | 2 +- .../arm9/gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a12/gnu/CMakeLists.txt | 2 +- .../cortex_a12/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a15/gnu/CMakeLists.txt | 2 +- .../cortex_a15/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a17/gnu/CMakeLists.txt | 2 +- .../cortex_a17/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a34/gnu/CMakeLists.txt | 2 +- ports/cortex_a35/gnu/CMakeLists.txt | 2 +- ports/cortex_a5/gnu/CMakeLists.txt | 2 +- ports/cortex_a5/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a53/gnu/CMakeLists.txt | 2 +- ports/cortex_a55/gnu/CMakeLists.txt | 2 +- ports/cortex_a57/gnu/CMakeLists.txt | 2 +- ports/cortex_a65/gnu/CMakeLists.txt | 2 +- ports/cortex_a65ae/gnu/CMakeLists.txt | 2 +- ports/cortex_a7/gnu/CMakeLists.txt | 2 +- ports/cortex_a7/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a72/gnu/CMakeLists.txt | 2 +- ports/cortex_a73/gnu/CMakeLists.txt | 2 +- ports/cortex_a75/gnu/CMakeLists.txt | 2 +- ports/cortex_a76/gnu/CMakeLists.txt | 2 +- ports/cortex_a76ae/gnu/CMakeLists.txt | 2 +- ports/cortex_a77/gnu/CMakeLists.txt | 2 +- ports/cortex_a8/gnu/CMakeLists.txt | 2 +- ports/cortex_a8/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_a9/gnu/CMakeLists.txt | 2 +- ports/cortex_a9/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_m0/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_m23/gnu/CMakeLists.txt | 2 +- .../cortex_m23/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../ghs/example_build/tx_initialize_low_level.arm | 2 +- ports/cortex_m3/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../cortex_m33/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../ghs/example_build/tx_initialize_low_level.arm | 2 +- ports/cortex_m4/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../cortex_m55/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../ghs/example_build/tx_initialize_low_level.arm | 2 +- ports/cortex_m7/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- .../cortex_m85/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_r4/gnu/CMakeLists.txt | 2 +- ports/cortex_r4/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_r5/gnu/CMakeLists.txt | 2 +- ports/cortex_r5/gnu/example_build/build_threadx.sh | 2 +- .../gnu/example_build/build_threadx_sample.sh | 2 +- ports/cortex_r52/gnu/CMakeLists.txt | 2 +- .../example_build/fvp_baser_aemv8r/CMakeLists.txt | 2 +- .../fvp_baser_aemv8r/test/run_fvp_test.py | 2 +- .../gnu/example_build/s32z280_evb/CMakeLists.txt | 2 +- .../s32z280_evb/tools/read_identity.gdb | 2 +- .../ARMv7-A/threadx/ports/gnu/CMakeLists.txt | 2 +- .../ghs/example_build/tx_initialize_low_level.arm | 2 +- .../ARMv8-A/threadx/ports/gnu/CMakeLists.txt | 2 +- .../ARMv8-A/threadx_smp/ports/gnu/CMakeLists.txt | 2 +- ports_module/cortex_a7/ac5/inc/txm_module_port.h | 2 +- .../src/txm_module_manager_mm_register_setup.c | 2 +- ports_module/cortex_a7/gnu/inc/txm_module_port.h | 2 +- .../src/txm_module_manager_mm_register_setup.c | 2 +- ports_module/cortex_a7/iar/inc/txm_module_port.h | 2 +- .../src/txm_module_manager_mm_register_setup.c | 2 +- .../s32z280_evb/tools/diagnose_module.gdb | 2 +- .../s32z280_evb/tools/run_module_demo.gdb | 2 +- .../s32z280_evb/tools/run_module_demo.sh | 2 +- ports_module/cortex_r52/gnu/inc/tx_port.h | 2 +- ports_module/cortex_r52/gnu/inc/txm_module_port.h | 2 +- .../module_manager/src/tx_thread_context_restore.S | 2 +- .../module_manager/src/tx_thread_context_save.S | 2 +- .../gnu/module_manager/src/tx_thread_schedule.S | 2 +- .../gnu/module_manager/src/tx_thread_stack_build.S | 2 +- .../module_manager/src/tx_thread_system_return.S | 2 +- .../src/txm_module_manager_alignment_adjust.c | 2 +- .../txm_module_manager_external_memory_enable.c | 2 +- .../src/txm_module_manager_memory_fault_handler.c | 2 +- .../src/txm_module_manager_thread_stack_build.S | 2 +- ports_smp/cortex_a34_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a35_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a53_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a55_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a57_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a5_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a5x_smp/gnu/CMakeLists.txt | 2 +- .../green/src/tx_thread_smp_time_get.a64 | 2 +- ports_smp/cortex_a65_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a65ae_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a72_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a73_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a75_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a76_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a76ae_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a77_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a78_smp/gnu/CMakeLists.txt | 2 +- ports_smp/cortex_a7_smp/gnu/CMakeLists.txt | 2 +- ports_smp/linux/gnu/CMakeLists.txt | 2 +- ports_smp/mips32_interaptiv_smp/gnu/CMakeLists.txt | 2 +- scripts/check_ai_disclosure.sh | 129 +++++++++++++++++++++ test/tx/cmake/thread_transition/CMakeLists.txt | 2 +- 158 files changed, 347 insertions(+), 167 deletions(-) create mode 100644 .github/workflows/repo_checks.yml create mode 100755 scripts/check_ai_disclosure.sh (limited to 'common_modules/module_lib/src') diff --git a/.github/workflows/repo_checks.yml b/.github/workflows/repo_checks.yml new file mode 100644 index 00000000..955e6ddd --- /dev/null +++ b/.github/workflows/repo_checks.yml @@ -0,0 +1,63 @@ +############################################################################### +# Copyright (c) 2026 Eclipse ThreadX contributors +# +# This program and the accompanying materials are made available under the +# terms of the MIT License which is available at +# https://opensource.org/licenses/MIT. +# +# AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5). +# The AI-generated portions may be considered public domain (CC0-1.0) +# and not subject to the project's licence. The human contributor has +# reviewed and verified that the code is correct. +# +# SPDX-License-Identifier: MIT and CC0-1.0 +############################################################################### + +name: repo_checks + +# Repository-wide text checks. +# +# THIS LIVES IN ITS OWN WORKFLOW BECAUSE IT MUST NOT BE PATH-FILTERED, and a +# path filter is a property of a workflow rather than of a job. The check +# selects its input with `git ls-files` and scans every tracked file, so any +# file at all can carry a finding. +# +# That is not hypothetical here. The pass that introduced the fixed +# disclosure line covered source files only, and the drift it was meant to end +# survived for months afterwards in CMake files, toolchain files, shell and +# PowerShell scripts, a GDB script and a Visual Studio manifest -- precisely +# the files a source-path filter would have skipped. A workflow that gates no +# pull request anybody opens is worse than no workflow, because it looks like +# coverage. +# +# Cheap enough that running it on everything costs nothing worth measuring: it +# is grep over a repository this size, with no toolchain, no build and no +# cache. + +on: + # No `paths:` on either trigger, deliberately. See above. + push: + branches: [ dev, master ] + pull_request: + branches: [ dev, master ] + +# A second push to the same branch makes the first answer irrelevant. +concurrency: + group: repo-checks-${{ github.ref }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + checks: + runs-on: ubuntu-24.04 + steps: + # Actions are pinned to a commit SHA with the version in the trailing + # comment. A tag can be moved; a SHA cannot, which is what makes "which + # code ran in our CI" answerable from the repository. + - name: Check out the repository + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Check the AI disclosure comments + run: scripts/check_ai_disclosure.sh diff --git a/cmake/aarch64-none-elf.cmake b/cmake/aarch64-none-elf.cmake index be203425..dada9fec 100644 --- a/cmake/aarch64-none-elf.cmake +++ b/cmake/aarch64-none-elf.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Shared settings for the AArch64 bare metal ports, the counterpart of # arm-none-eabi.cmake beside it. The two differ by more than the tool prefix: diff --git a/cmake/arm11.cmake b/cmake/arm11.cmake index cd28e945..957e1f05 100644 --- a/cmake/arm11.cmake +++ b/cmake/arm11.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for ARM11 using GNU tools. The port readme identifies the # target as ARM1136J-S, which is what -mcpu selects. diff --git a/cmake/arm9.cmake b/cmake/arm9.cmake index 5bf11375..436d232e 100644 --- a/cmake/arm9.cmake +++ b/cmake/arm9.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for ARM9 using GNU tools. This is the oldest core in the # CMake build; the port readme names ARM9 itself. diff --git a/cmake/cortex_a12.cmake b/cmake/cortex_a12.cmake index 54658771..4c5a603e 100644 --- a/cmake/cortex_a12.cmake +++ b/cmake/cortex_a12.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A12 using GNU tools. diff --git a/cmake/cortex_a15.cmake b/cmake/cortex_a15.cmake index 84f85702..30ab71d2 100644 --- a/cmake/cortex_a15.cmake +++ b/cmake/cortex_a15.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A15 using GNU tools. diff --git a/cmake/cortex_a17.cmake b/cmake/cortex_a17.cmake index 594ee96f..c0f7e86b 100644 --- a/cmake/cortex_a17.cmake +++ b/cmake/cortex_a17.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A17 using GNU tools. diff --git a/cmake/cortex_a34.cmake b/cmake/cortex_a34.cmake index 36d855e3..14d244ea 100644 --- a/cmake/cortex_a34.cmake +++ b/cmake/cortex_a34.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A34 using GNU tools. diff --git a/cmake/cortex_a35.cmake b/cmake/cortex_a35.cmake index ed3d187b..60107e31 100644 --- a/cmake/cortex_a35.cmake +++ b/cmake/cortex_a35.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A35 using GNU tools. diff --git a/cmake/cortex_a5.cmake b/cmake/cortex_a5.cmake index c8757784..501695db 100644 --- a/cmake/cortex_a5.cmake +++ b/cmake/cortex_a5.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A5 using GNU tools. diff --git a/cmake/cortex_a53.cmake b/cmake/cortex_a53.cmake index d5011d27..97580857 100644 --- a/cmake/cortex_a53.cmake +++ b/cmake/cortex_a53.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A53 using GNU tools. diff --git a/cmake/cortex_a55.cmake b/cmake/cortex_a55.cmake index 8c32ac03..fd13fd27 100644 --- a/cmake/cortex_a55.cmake +++ b/cmake/cortex_a55.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A55 using GNU tools. diff --git a/cmake/cortex_a57.cmake b/cmake/cortex_a57.cmake index 9a5b6422..ca2a1902 100644 --- a/cmake/cortex_a57.cmake +++ b/cmake/cortex_a57.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A57 using GNU tools. diff --git a/cmake/cortex_a5x.cmake b/cmake/cortex_a5x.cmake index 0fe6730e..b212cb87 100644 --- a/cmake/cortex_a5x.cmake +++ b/cmake/cortex_a5x.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for the Arm Cortex-A5x SMP port using GNU tools. That port # targets the family rather than one core: its readme and example name A53, diff --git a/cmake/cortex_a65.cmake b/cmake/cortex_a65.cmake index 389605aa..6011522c 100644 --- a/cmake/cortex_a65.cmake +++ b/cmake/cortex_a65.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A65 using GNU tools. diff --git a/cmake/cortex_a65ae.cmake b/cmake/cortex_a65ae.cmake index 717ce0c4..d0bf1d50 100644 --- a/cmake/cortex_a65ae.cmake +++ b/cmake/cortex_a65ae.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A65ae using GNU tools. diff --git a/cmake/cortex_a7.cmake b/cmake/cortex_a7.cmake index 5e3f4a9c..2f0fb5c8 100644 --- a/cmake/cortex_a7.cmake +++ b/cmake/cortex_a7.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A7 using GNU tools. diff --git a/cmake/cortex_a72.cmake b/cmake/cortex_a72.cmake index 24a65cf9..3e07e47d 100644 --- a/cmake/cortex_a72.cmake +++ b/cmake/cortex_a72.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A72 using GNU tools. diff --git a/cmake/cortex_a73.cmake b/cmake/cortex_a73.cmake index b5bb0c7d..eb95c4f1 100644 --- a/cmake/cortex_a73.cmake +++ b/cmake/cortex_a73.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A73 using GNU tools. diff --git a/cmake/cortex_a75.cmake b/cmake/cortex_a75.cmake index 8b4694df..851a6f90 100644 --- a/cmake/cortex_a75.cmake +++ b/cmake/cortex_a75.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A75 using GNU tools. diff --git a/cmake/cortex_a76.cmake b/cmake/cortex_a76.cmake index 8a4718b6..1d3766e9 100644 --- a/cmake/cortex_a76.cmake +++ b/cmake/cortex_a76.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A76 using GNU tools. diff --git a/cmake/cortex_a76ae.cmake b/cmake/cortex_a76ae.cmake index 66c9cd40..99e4de80 100644 --- a/cmake/cortex_a76ae.cmake +++ b/cmake/cortex_a76ae.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A76ae using GNU tools. diff --git a/cmake/cortex_a77.cmake b/cmake/cortex_a77.cmake index ba61d0e2..2df67ddd 100644 --- a/cmake/cortex_a77.cmake +++ b/cmake/cortex_a77.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A77 using GNU tools. diff --git a/cmake/cortex_a78.cmake b/cmake/cortex_a78.cmake index b5523913..fdd8324b 100644 --- a/cmake/cortex_a78.cmake +++ b/cmake/cortex_a78.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A78 using GNU tools. diff --git a/cmake/cortex_a8.cmake b/cmake/cortex_a8.cmake index 8fd839e9..92db6228 100644 --- a/cmake/cortex_a8.cmake +++ b/cmake/cortex_a8.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-A8 using GNU tools. diff --git a/cmake/cortex_m23.cmake b/cmake/cortex_m23.cmake index 22ba78a4..a8ed7125 100644 --- a/cmake/cortex_m23.cmake +++ b/cmake/cortex_m23.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-M23 using GNU tools. Armv8-M Baseline is # Thumb only, hence -mthumb with no Arm state alternative. diff --git a/cmake/cortex_m33.cmake b/cmake/cortex_m33.cmake index 6acab09d..c7dff48a 100644 --- a/cmake/cortex_m33.cmake +++ b/cmake/cortex_m33.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-M33 using GNU tools. diff --git a/cmake/cortex_m52.cmake b/cmake/cortex_m52.cmake index 4ba987d6..21a7d487 100644 --- a/cmake/cortex_m52.cmake +++ b/cmake/cortex_m52.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-M52 using GNU tools. # diff --git a/cmake/cortex_m55.cmake b/cmake/cortex_m55.cmake index 3a35c8bd..abdf3264 100644 --- a/cmake/cortex_m55.cmake +++ b/cmake/cortex_m55.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-M55 using GNU tools. # diff --git a/cmake/cortex_m85.cmake b/cmake/cortex_m85.cmake index 82b44a73..e8eb7c29 100644 --- a/cmake/cortex_m85.cmake +++ b/cmake/cortex_m85.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-M85 using GNU tools. # diff --git a/cmake/cortex_r4.cmake b/cmake/cortex_r4.cmake index 4b09e076..88b5ce9e 100644 --- a/cmake/cortex_r4.cmake +++ b/cmake/cortex_r4.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-R4 using GNU tools. diff --git a/cmake/cortex_r5.cmake b/cmake/cortex_r5.cmake index 8c93a001..6050a4c9 100644 --- a/cmake/cortex_r5.cmake +++ b/cmake/cortex_r5.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-R5 using GNU tools. diff --git a/cmake/cortex_r52.cmake b/cmake/cortex_r52.cmake index a9e7aee6..183782c9 100644 --- a/cmake/cortex_r52.cmake +++ b/cmake/cortex_r52.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-R52 (Armv8-R, AArch32) using GNU tools. diff --git a/cmake/cortex_r52_clang.cmake b/cmake/cortex_r52_clang.cmake index 2105ecbe..f5669efa 100644 --- a/cmake/cortex_r52_clang.cmake +++ b/cmake/cortex_r52_clang.cmake @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Toolchain file for Arm Cortex-R52 (Armv8-R, AArch32) using Arm Toolchain for # Embedded, which is LLVM based and is the successor to Arm Compiler 6. diff --git a/common_modules/module_lib/src/txm_module_object_deallocate.c b/common_modules/module_lib/src/txm_module_object_deallocate.c index e0c0d6c4..fa5ebe85 100644 --- a/common_modules/module_lib/src/txm_module_object_deallocate.c +++ b/common_modules/module_lib/src/txm_module_object_deallocate.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/common_modules/module_manager/inc/txm_module_manager_dispatch.h b/common_modules/module_manager/inc/txm_module_manager_dispatch.h index 2df1491b..9210c989 100644 --- a/common_modules/module_manager/inc/txm_module_manager_dispatch.h +++ b/common_modules/module_manager/inc/txm_module_manager_dispatch.h @@ -11,18 +11,6 @@ **************************************************************************/ // Portions of this file were generated with AI assistance. -// Some portions generated by Claude Code (Opus 5). - -// Some portions generated by Claude Code (Opus 5). - -// Some portions generated by Claude Code (Opus 5). - -// Some portions generated by Claude Code (Opus 5). - -// Some portions generated by Claude Code (Opus 5). - -// Some portions generated by Claude Code (Opus 5). - /**************************************************************************/ /**************************************************************************/ diff --git a/common_modules/module_manager/inc/txm_module_manager_util.h b/common_modules/module_manager/inc/txm_module_manager_util.h index 7feb0f3e..6b9e5b76 100644 --- a/common_modules/module_manager/inc/txm_module_manager_util.h +++ b/common_modules/module_manager/inc/txm_module_manager_util.h @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/common_modules/module_manager/src/txm_module_manager_object_allocate.c b/common_modules/module_manager/src/txm_module_manager_object_allocate.c index 7729ad32..8e452b44 100644 --- a/common_modules/module_manager/src/txm_module_manager_object_allocate.c +++ b/common_modules/module_manager/src/txm_module_manager_object_allocate.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/common_modules/module_manager/src/txm_module_manager_object_deallocate.c b/common_modules/module_manager/src/txm_module_manager_object_deallocate.c index dd4c105d..c9a9ed4f 100644 --- a/common_modules/module_manager/src/txm_module_manager_object_deallocate.c +++ b/common_modules/module_manager/src/txm_module_manager_object_deallocate.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/common_modules/module_manager/src/txm_module_manager_thread_reset.c b/common_modules/module_manager/src/txm_module_manager_thread_reset.c index 1a33964e..334070bf 100644 --- a/common_modules/module_manager/src/txm_module_manager_thread_reset.c +++ b/common_modules/module_manager/src/txm_module_manager_thread_reset.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/common_modules/module_manager/src/txm_module_manager_util.c b/common_modules/module_manager/src/txm_module_manager_util.c index 756120fa..93516ab2 100644 --- a/common_modules/module_manager/src/txm_module_manager_util.c +++ b/common_modules/module_manager/src/txm_module_manager_util.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports/arm11/gnu/CMakeLists.txt b/ports/arm11/gnu/CMakeLists.txt index 83d7e0fa..b8166b4d 100644 --- a/ports/arm11/gnu/CMakeLists.txt +++ b/ports/arm11/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for arm11, GNU tools. diff --git a/ports/arm11/gnu/example_build/build_threadx.sh b/ports/arm11/gnu/example_build/build_threadx.sh index 693b44ce..f7253cf1 100755 --- a/ports/arm11/gnu/example_build/build_threadx.sh +++ b/ports/arm11/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/arm11/gnu/example_build/build_threadx_sample.sh b/ports/arm11/gnu/example_build/build_threadx_sample.sh index 93287d53..97a3a1c5 100755 --- a/ports/arm11/gnu/example_build/build_threadx_sample.sh +++ b/ports/arm11/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/arm9/gnu/CMakeLists.txt b/ports/arm9/gnu/CMakeLists.txt index 6d071937..f98d2556 100644 --- a/ports/arm9/gnu/CMakeLists.txt +++ b/ports/arm9/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for arm9, GNU tools. diff --git a/ports/arm9/gnu/example_build/build_threadx.sh b/ports/arm9/gnu/example_build/build_threadx.sh index ad8a3357..d8de5055 100755 --- a/ports/arm9/gnu/example_build/build_threadx.sh +++ b/ports/arm9/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/arm9/gnu/example_build/build_threadx_sample.sh b/ports/arm9/gnu/example_build/build_threadx_sample.sh index 78b3ac7f..d9339bc0 100755 --- a/ports/arm9/gnu/example_build/build_threadx_sample.sh +++ b/ports/arm9/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a12/gnu/CMakeLists.txt b/ports/cortex_a12/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a12/gnu/CMakeLists.txt +++ b/ports/cortex_a12/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a12/gnu/example_build/build_threadx.sh b/ports/cortex_a12/gnu/example_build/build_threadx.sh index ec3cd827..af9b02a8 100755 --- a/ports/cortex_a12/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a12/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a12/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a12/gnu/example_build/build_threadx_sample.sh index 0d2fdf5b..43b0882e 100755 --- a/ports/cortex_a12/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a12/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a15/gnu/CMakeLists.txt b/ports/cortex_a15/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a15/gnu/CMakeLists.txt +++ b/ports/cortex_a15/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a15/gnu/example_build/build_threadx.sh b/ports/cortex_a15/gnu/example_build/build_threadx.sh index 74e7fe8a..4cfb4531 100755 --- a/ports/cortex_a15/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a15/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a15/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a15/gnu/example_build/build_threadx_sample.sh index dcda9362..e34e7410 100755 --- a/ports/cortex_a15/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a15/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a17/gnu/CMakeLists.txt b/ports/cortex_a17/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a17/gnu/CMakeLists.txt +++ b/ports/cortex_a17/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a17/gnu/example_build/build_threadx.sh b/ports/cortex_a17/gnu/example_build/build_threadx.sh index 6616b2d2..31f1ee34 100755 --- a/ports/cortex_a17/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a17/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a17/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a17/gnu/example_build/build_threadx_sample.sh index e200d473..ef776a9b 100755 --- a/ports/cortex_a17/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a17/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a34/gnu/CMakeLists.txt b/ports/cortex_a34/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a34/gnu/CMakeLists.txt +++ b/ports/cortex_a34/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a35/gnu/CMakeLists.txt b/ports/cortex_a35/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a35/gnu/CMakeLists.txt +++ b/ports/cortex_a35/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a5/gnu/CMakeLists.txt b/ports/cortex_a5/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a5/gnu/CMakeLists.txt +++ b/ports/cortex_a5/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a5/gnu/example_build/build_threadx.sh b/ports/cortex_a5/gnu/example_build/build_threadx.sh index c1900396..212fccc9 100755 --- a/ports/cortex_a5/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a5/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a5/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a5/gnu/example_build/build_threadx_sample.sh index 4422f95f..c65b831a 100755 --- a/ports/cortex_a5/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a5/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a53/gnu/CMakeLists.txt b/ports/cortex_a53/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a53/gnu/CMakeLists.txt +++ b/ports/cortex_a53/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a55/gnu/CMakeLists.txt b/ports/cortex_a55/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a55/gnu/CMakeLists.txt +++ b/ports/cortex_a55/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a57/gnu/CMakeLists.txt b/ports/cortex_a57/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a57/gnu/CMakeLists.txt +++ b/ports/cortex_a57/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a65/gnu/CMakeLists.txt b/ports/cortex_a65/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a65/gnu/CMakeLists.txt +++ b/ports/cortex_a65/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a65ae/gnu/CMakeLists.txt b/ports/cortex_a65ae/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a65ae/gnu/CMakeLists.txt +++ b/ports/cortex_a65ae/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a7/gnu/CMakeLists.txt b/ports/cortex_a7/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a7/gnu/CMakeLists.txt +++ b/ports/cortex_a7/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a7/gnu/example_build/build_threadx.sh b/ports/cortex_a7/gnu/example_build/build_threadx.sh index 223f72cf..e7e0408a 100755 --- a/ports/cortex_a7/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a7/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a7/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a7/gnu/example_build/build_threadx_sample.sh index a59e9139..8526340c 100755 --- a/ports/cortex_a7/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a7/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a72/gnu/CMakeLists.txt b/ports/cortex_a72/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a72/gnu/CMakeLists.txt +++ b/ports/cortex_a72/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a73/gnu/CMakeLists.txt b/ports/cortex_a73/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a73/gnu/CMakeLists.txt +++ b/ports/cortex_a73/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a75/gnu/CMakeLists.txt b/ports/cortex_a75/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a75/gnu/CMakeLists.txt +++ b/ports/cortex_a75/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a76/gnu/CMakeLists.txt b/ports/cortex_a76/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a76/gnu/CMakeLists.txt +++ b/ports/cortex_a76/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a76ae/gnu/CMakeLists.txt b/ports/cortex_a76ae/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a76ae/gnu/CMakeLists.txt +++ b/ports/cortex_a76ae/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a77/gnu/CMakeLists.txt b/ports/cortex_a77/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports/cortex_a77/gnu/CMakeLists.txt +++ b/ports/cortex_a77/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a8/gnu/CMakeLists.txt b/ports/cortex_a8/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a8/gnu/CMakeLists.txt +++ b/ports/cortex_a8/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a8/gnu/example_build/build_threadx.sh b/ports/cortex_a8/gnu/example_build/build_threadx.sh index ab7ba54f..2678ab15 100755 --- a/ports/cortex_a8/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a8/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a8/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a8/gnu/example_build/build_threadx_sample.sh index 88e7ed55..78deda53 100755 --- a/ports/cortex_a8/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a8/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a9/gnu/CMakeLists.txt b/ports/cortex_a9/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports/cortex_a9/gnu/CMakeLists.txt +++ b/ports/cortex_a9/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports/cortex_a9/gnu/example_build/build_threadx.sh b/ports/cortex_a9/gnu/example_build/build_threadx.sh index ede74365..920b8b7f 100755 --- a/ports/cortex_a9/gnu/example_build/build_threadx.sh +++ b/ports/cortex_a9/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_a9/gnu/example_build/build_threadx_sample.sh b/ports/cortex_a9/gnu/example_build/build_threadx_sample.sh index ea3178cb..d7fdce06 100755 --- a/ports/cortex_a9/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_a9/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m0/gnu/example_build/build_threadx.sh b/ports/cortex_m0/gnu/example_build/build_threadx.sh index 88e2bd47..3ef03845 100755 --- a/ports/cortex_m0/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m0/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m0/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m0/gnu/example_build/build_threadx_sample.sh index b9de126f..772813df 100755 --- a/ports/cortex_m0/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m0/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m23/gnu/CMakeLists.txt b/ports/cortex_m23/gnu/CMakeLists.txt index e7c71e07..a16300c1 100644 --- a/ports/cortex_m23/gnu/CMakeLists.txt +++ b/ports/cortex_m23/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_m23, GNU tools. diff --git a/ports/cortex_m23/gnu/example_build/build_threadx.sh b/ports/cortex_m23/gnu/example_build/build_threadx.sh index b5c97e53..16a42438 100755 --- a/ports/cortex_m23/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m23/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m23/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m23/gnu/example_build/build_threadx_sample.sh index b359e160..7aa42561 100755 --- a/ports/cortex_m23/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m23/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m3/ghs/example_build/tx_initialize_low_level.arm b/ports/cortex_m3/ghs/example_build/tx_initialize_low_level.arm index 47beffbc..b9f622fe 100644 --- a/ports/cortex_m3/ghs/example_build/tx_initialize_low_level.arm +++ b/ports/cortex_m3/ghs/example_build/tx_initialize_low_level.arm @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: MIT **************************************************************************/ -; Some portions generated by Copilot (Opus 5). +; Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports/cortex_m3/gnu/example_build/build_threadx.sh b/ports/cortex_m3/gnu/example_build/build_threadx.sh index 9c924d41..b938bb2f 100755 --- a/ports/cortex_m3/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m3/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m3/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m3/gnu/example_build/build_threadx_sample.sh index 1b6b7f7c..472e8ebd 100755 --- a/ports/cortex_m3/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m3/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m33/gnu/example_build/build_threadx.sh b/ports/cortex_m33/gnu/example_build/build_threadx.sh index b97e7b2a..00fd4140 100755 --- a/ports/cortex_m33/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m33/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m33/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m33/gnu/example_build/build_threadx_sample.sh index 6cf086ed..5bd1c8df 100755 --- a/ports/cortex_m33/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m33/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m4/ghs/example_build/tx_initialize_low_level.arm b/ports/cortex_m4/ghs/example_build/tx_initialize_low_level.arm index 1de645ed..ee3bc56f 100644 --- a/ports/cortex_m4/ghs/example_build/tx_initialize_low_level.arm +++ b/ports/cortex_m4/ghs/example_build/tx_initialize_low_level.arm @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: MIT **************************************************************************/ -; Some portions generated by Copilot (Opus 5). +; Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports/cortex_m4/gnu/example_build/build_threadx.sh b/ports/cortex_m4/gnu/example_build/build_threadx.sh index 69a95178..d6971e30 100755 --- a/ports/cortex_m4/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m4/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m4/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m4/gnu/example_build/build_threadx_sample.sh index 39fef203..34c60bf1 100755 --- a/ports/cortex_m4/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m4/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m55/gnu/example_build/build_threadx.sh b/ports/cortex_m55/gnu/example_build/build_threadx.sh index 67220aae..dc0d75bc 100755 --- a/ports/cortex_m55/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m55/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m55/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m55/gnu/example_build/build_threadx_sample.sh index b297995a..0131c408 100755 --- a/ports/cortex_m55/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m55/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m7/ghs/example_build/tx_initialize_low_level.arm b/ports/cortex_m7/ghs/example_build/tx_initialize_low_level.arm index b98fa974..7c2b80ab 100644 --- a/ports/cortex_m7/ghs/example_build/tx_initialize_low_level.arm +++ b/ports/cortex_m7/ghs/example_build/tx_initialize_low_level.arm @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: MIT **************************************************************************/ -; Some portions generated by Copilot (Opus 5). +; Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports/cortex_m7/gnu/example_build/build_threadx.sh b/ports/cortex_m7/gnu/example_build/build_threadx.sh index d7875b4a..1aea1938 100755 --- a/ports/cortex_m7/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m7/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m7/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m7/gnu/example_build/build_threadx_sample.sh index 3b6a6c01..9a59e93c 100755 --- a/ports/cortex_m7/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m7/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m85/gnu/example_build/build_threadx.sh b/ports/cortex_m85/gnu/example_build/build_threadx.sh index b579685e..cc87ce57 100755 --- a/ports/cortex_m85/gnu/example_build/build_threadx.sh +++ b/ports/cortex_m85/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_m85/gnu/example_build/build_threadx_sample.sh b/ports/cortex_m85/gnu/example_build/build_threadx_sample.sh index 0bddbbf6..795d9400 100755 --- a/ports/cortex_m85/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_m85/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_r4/gnu/CMakeLists.txt b/ports/cortex_r4/gnu/CMakeLists.txt index b40b5b99..328020d0 100644 --- a/ports/cortex_r4/gnu/CMakeLists.txt +++ b/ports/cortex_r4/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_r4, GNU tools. diff --git a/ports/cortex_r4/gnu/example_build/build_threadx.sh b/ports/cortex_r4/gnu/example_build/build_threadx.sh index bd03369f..9d55743b 100755 --- a/ports/cortex_r4/gnu/example_build/build_threadx.sh +++ b/ports/cortex_r4/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_r4/gnu/example_build/build_threadx_sample.sh b/ports/cortex_r4/gnu/example_build/build_threadx_sample.sh index 1f0e2709..7871bae4 100755 --- a/ports/cortex_r4/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_r4/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_r5/gnu/CMakeLists.txt b/ports/cortex_r5/gnu/CMakeLists.txt index 46d1dadb..3e5421ed 100644 --- a/ports/cortex_r5/gnu/CMakeLists.txt +++ b/ports/cortex_r5/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_r5, GNU tools. diff --git a/ports/cortex_r5/gnu/example_build/build_threadx.sh b/ports/cortex_r5/gnu/example_build/build_threadx.sh index a71eb5cb..0108d1c8 100755 --- a/ports/cortex_r5/gnu/example_build/build_threadx.sh +++ b/ports/cortex_r5/gnu/example_build/build_threadx.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_r5/gnu/example_build/build_threadx_sample.sh b/ports/cortex_r5/gnu/example_build/build_threadx_sample.sh index 2b3e4d55..53eb5902 100755 --- a/ports/cortex_r5/gnu/example_build/build_threadx_sample.sh +++ b/ports/cortex_r5/gnu/example_build/build_threadx_sample.sh @@ -10,7 +10,7 @@ # SPDX-License-Identifier: MIT # # AI Disclosure: This file was largely AI-generated by Copilot (Claude Sonnet 4.6). -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # The AI-generated portions may be considered public domain (CC0-1.0) # and not subject to the project's licence. The human contributor has # reviewed and verified that the code is correct. diff --git a/ports/cortex_r52/gnu/CMakeLists.txt b/ports/cortex_r52/gnu/CMakeLists.txt index 957e2cbe..6444a063 100644 --- a/ports/cortex_r52/gnu/CMakeLists.txt +++ b/ports/cortex_r52/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. target_sources(${PROJECT_NAME} PRIVATE diff --git a/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/CMakeLists.txt b/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/CMakeLists.txt index c7e15ec3..ee01eb3e 100644 --- a/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/CMakeLists.txt +++ b/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Example builds for Cortex-R52 on the Armv8-R AEM FVP (FVP_BaseR_AEMv8R). diff --git a/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/test/run_fvp_test.py b/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/test/run_fvp_test.py index 356a6a10..37aa0adc 100644 --- a/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/test/run_fvp_test.py +++ b/ports/cortex_r52/gnu/example_build/fvp_baser_aemv8r/test/run_fvp_test.py @@ -2,7 +2,7 @@ # # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # """Run a Cortex-R52 image on the Armv8-R AEM FVP and assert its result. diff --git a/ports/cortex_r52/gnu/example_build/s32z280_evb/CMakeLists.txt b/ports/cortex_r52/gnu/example_build/s32z280_evb/CMakeLists.txt index ae0a8b73..85dd29d6 100644 --- a/ports/cortex_r52/gnu/example_build/s32z280_evb/CMakeLists.txt +++ b/ports/cortex_r52/gnu/example_build/s32z280_evb/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Example build for Cortex-R52 on the NXP S32Z280-594EVB, RTU0 core 0. # diff --git a/ports/cortex_r52/gnu/example_build/s32z280_evb/tools/read_identity.gdb b/ports/cortex_r52/gnu/example_build/s32z280_evb/tools/read_identity.gdb index e409f8f3..1bb0890e 100644 --- a/ports/cortex_r52/gnu/example_build/s32z280_evb/tools/read_identity.gdb +++ b/ports/cortex_r52/gnu/example_build/s32z280_evb/tools/read_identity.gdb @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Load s32z280_boot.elf onto the S32Z280-594EVB, run it, and report what the # core said about itself. diff --git a/ports_arch/ARMv7-A/threadx/ports/gnu/CMakeLists.txt b/ports_arch/ARMv7-A/threadx/ports/gnu/CMakeLists.txt index d03910d1..fc215876 100644 --- a/ports_arch/ARMv7-A/threadx/ports/gnu/CMakeLists.txt +++ b/ports_arch/ARMv7-A/threadx/ports/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the ARMv7-A cores, GNU tools. # Copied into every ARMv7-A gnu port by update.sh, so edit it here. diff --git a/ports_arch/ARMv7-M/threadx/ghs/example_build/tx_initialize_low_level.arm b/ports_arch/ARMv7-M/threadx/ghs/example_build/tx_initialize_low_level.arm index b98fa974..7c2b80ab 100644 --- a/ports_arch/ARMv7-M/threadx/ghs/example_build/tx_initialize_low_level.arm +++ b/ports_arch/ARMv7-M/threadx/ghs/example_build/tx_initialize_low_level.arm @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: MIT **************************************************************************/ -; Some portions generated by Copilot (Opus 5). +; Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_arch/ARMv8-A/threadx/ports/gnu/CMakeLists.txt b/ports_arch/ARMv8-A/threadx/ports/gnu/CMakeLists.txt index 12a58cbe..972c10f1 100644 --- a/ports_arch/ARMv8-A/threadx/ports/gnu/CMakeLists.txt +++ b/ports_arch/ARMv8-A/threadx/ports/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu port by update.sh, so edit it here. diff --git a/ports_arch/ARMv8-A/threadx_smp/ports/gnu/CMakeLists.txt b/ports_arch/ARMv8-A/threadx_smp/ports/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_arch/ARMv8-A/threadx_smp/ports/gnu/CMakeLists.txt +++ b/ports_arch/ARMv8-A/threadx_smp/ports/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_module/cortex_a7/ac5/inc/txm_module_port.h b/ports_module/cortex_a7/ac5/inc/txm_module_port.h index 126be1e8..8953710f 100644 --- a/ports_module/cortex_a7/ac5/inc/txm_module_port.h +++ b/ports_module/cortex_a7/ac5/inc/txm_module_port.h @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_a7/ac5/module_manager/src/txm_module_manager_mm_register_setup.c b/ports_module/cortex_a7/ac5/module_manager/src/txm_module_manager_mm_register_setup.c index a86cfbe4..b5166df3 100644 --- a/ports_module/cortex_a7/ac5/module_manager/src/txm_module_manager_mm_register_setup.c +++ b/ports_module/cortex_a7/ac5/module_manager/src/txm_module_manager_mm_register_setup.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_a7/gnu/inc/txm_module_port.h b/ports_module/cortex_a7/gnu/inc/txm_module_port.h index 11947992..bfb04475 100644 --- a/ports_module/cortex_a7/gnu/inc/txm_module_port.h +++ b/ports_module/cortex_a7/gnu/inc/txm_module_port.h @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_a7/gnu/module_manager/src/txm_module_manager_mm_register_setup.c b/ports_module/cortex_a7/gnu/module_manager/src/txm_module_manager_mm_register_setup.c index b2161fde..5be18136 100644 --- a/ports_module/cortex_a7/gnu/module_manager/src/txm_module_manager_mm_register_setup.c +++ b/ports_module/cortex_a7/gnu/module_manager/src/txm_module_manager_mm_register_setup.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_a7/iar/inc/txm_module_port.h b/ports_module/cortex_a7/iar/inc/txm_module_port.h index dbaf7e17..aafa8d43 100644 --- a/ports_module/cortex_a7/iar/inc/txm_module_port.h +++ b/ports_module/cortex_a7/iar/inc/txm_module_port.h @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_a7/iar/module_manager/src/txm_module_manager_mm_register_setup.c b/ports_module/cortex_a7/iar/module_manager/src/txm_module_manager_mm_register_setup.c index 3adc61c3..08c83dc7 100644 --- a/ports_module/cortex_a7/iar/module_manager/src/txm_module_manager_mm_register_setup.c +++ b/ports_module/cortex_a7/iar/module_manager/src/txm_module_manager_mm_register_setup.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/diagnose_module.gdb b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/diagnose_module.gdb index 235cd6e4..d1a1a489 100644 --- a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/diagnose_module.gdb +++ b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/diagnose_module.gdb @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Diagnostic run for the S32Z280 module manager demonstration. Same attach and # load as run_module_demo.gdb, but instead of judging the result it dumps the diff --git a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.gdb b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.gdb index b95eb826..9c2fe3b5 100644 --- a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.gdb +++ b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.gdb @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Load s32z280_module.elf onto the S32Z280-594EVB, run it, and report what the # protection boundary did. diff --git a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.sh b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.sh index c37d5a96..bbbdee43 100755 --- a/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.sh +++ b/ports_module/cortex_r52/gnu/example_build/s32z280_evb/tools/run_module_demo.sh @@ -1,7 +1,7 @@ #!/bin/bash # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # Run the ThreadX module manager demonstration on the S32Z280-594EVB and capture # the evidence: the console log and the fault registers. diff --git a/ports_module/cortex_r52/gnu/inc/tx_port.h b/ports_module/cortex_r52/gnu/inc/tx_port.h index d3013b1f..9f6e8e3d 100644 --- a/ports_module/cortex_r52/gnu/inc/tx_port.h +++ b/ports_module/cortex_r52/gnu/inc/tx_port.h @@ -8,7 +8,7 @@ * * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/inc/txm_module_port.h b/ports_module/cortex_r52/gnu/inc/txm_module_port.h index 33a994d9..1d71d40a 100644 --- a/ports_module/cortex_r52/gnu/inc/txm_module_port.h +++ b/ports_module/cortex_r52/gnu/inc/txm_module_port.h @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_restore.S b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_restore.S index 90865906..d6d7f63f 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_restore.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_restore.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_save.S b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_save.S index 9b61077e..26443700 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_save.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_context_save.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_schedule.S b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_schedule.S index ad92ea7e..e10d7c23 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_schedule.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_schedule.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_stack_build.S b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_stack_build.S index 935b321a..e45805f7 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_stack_build.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_stack_build.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_system_return.S b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_system_return.S index c0ab615b..ae0eac7d 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_system_return.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/tx_thread_system_return.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_alignment_adjust.c b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_alignment_adjust.c index 6850fe55..e06225f6 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_alignment_adjust.c +++ b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_alignment_adjust.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_external_memory_enable.c b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_external_memory_enable.c index c5b9adcf..f60f1ad7 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_external_memory_enable.c +++ b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_external_memory_enable.c @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ diff --git a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_memory_fault_handler.c b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_memory_fault_handler.c index cac30d2f..62f287e0 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_memory_fault_handler.c +++ b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_memory_fault_handler.c @@ -20,7 +20,7 @@ /**************************************************************************/ /**************************************************************************/ -// Some portions generated by Claude Code (Opus 5). +// Portions of this file were generated with AI assistance. #define TX_SOURCE_CODE diff --git a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_thread_stack_build.S b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_thread_stack_build.S index 69916ff0..1d1d711a 100644 --- a/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_thread_stack_build.S +++ b/ports_module/cortex_r52/gnu/module_manager/src/txm_module_manager_thread_stack_build.S @@ -8,7 +8,7 @@ @ * @ * SPDX-License-Identifier: MIT @ **************************************************************************/ -@ Some portions generated by Claude Code (Opus 5). +@ Portions of this file were generated with AI assistance. @ @ @/**************************************************************************/ diff --git a/ports_smp/cortex_a34_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a34_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a34_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a34_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a35_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a35_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a35_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a35_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a53_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a53_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a53_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a53_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a55_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a55_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a55_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a55_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a57_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a57_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a57_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a57_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a5_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a5_smp/gnu/CMakeLists.txt index d3b42149..28c41af5 100644 --- a/ports_smp/cortex_a5_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a5_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_a5_smp, GNU tools. diff --git a/ports_smp/cortex_a5x_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a5x_smp/gnu/CMakeLists.txt index dfbd61b3..08db4117 100644 --- a/ports_smp/cortex_a5x_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a5x_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_a5x_smp, GNU tools. diff --git a/ports_smp/cortex_a5x_smp/green/src/tx_thread_smp_time_get.a64 b/ports_smp/cortex_a5x_smp/green/src/tx_thread_smp_time_get.a64 index b3501d5a..37514c26 100644 --- a/ports_smp/cortex_a5x_smp/green/src/tx_thread_smp_time_get.a64 +++ b/ports_smp/cortex_a5x_smp/green/src/tx_thread_smp_time_get.a64 @@ -9,7 +9,7 @@ * SPDX-License-Identifier: MIT **************************************************************************/ -// Some portions generated by Codex (GPT-5). +// Portions of this file were generated with AI assistance. /**************************************************************************/ /**************************************************************************/ diff --git a/ports_smp/cortex_a65_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a65_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a65_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a65_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a65ae_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a65ae_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a65ae_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a65ae_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a72_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a72_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a72_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a72_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a73_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a73_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a73_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a73_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a75_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a75_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a75_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a75_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a76_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a76_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a76_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a76_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a76ae_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a76ae_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a76ae_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a76ae_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a77_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a77_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a77_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a77_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a78_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a78_smp/gnu/CMakeLists.txt index b4758a85..36f7492b 100644 --- a/ports_smp/cortex_a78_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a78_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX SMP port sources for the AArch64 cores, GNU tools. # Copied into every AArch64 gnu SMP port by update.sh, so edit it here. diff --git a/ports_smp/cortex_a7_smp/gnu/CMakeLists.txt b/ports_smp/cortex_a7_smp/gnu/CMakeLists.txt index ef6be36c..d4094f4d 100644 --- a/ports_smp/cortex_a7_smp/gnu/CMakeLists.txt +++ b/ports_smp/cortex_a7_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for cortex_a7_smp, GNU tools. diff --git a/ports_smp/linux/gnu/CMakeLists.txt b/ports_smp/linux/gnu/CMakeLists.txt index 23d4a1a5..7ff9e0a5 100644 --- a/ports_smp/linux/gnu/CMakeLists.txt +++ b/ports_smp/linux/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for linux, GNU tools. diff --git a/ports_smp/mips32_interaptiv_smp/gnu/CMakeLists.txt b/ports_smp/mips32_interaptiv_smp/gnu/CMakeLists.txt index 6f813331..c54890aa 100644 --- a/ports_smp/mips32_interaptiv_smp/gnu/CMakeLists.txt +++ b/ports_smp/mips32_interaptiv_smp/gnu/CMakeLists.txt @@ -1,6 +1,6 @@ # Copyright (c) 2026 Eclipse ThreadX contributors # SPDX-License-Identifier: MIT -# Some portions generated by Claude Code (Opus 5). +# Portions of this file were generated with AI assistance. # # ThreadX port sources for mips32_interaptiv_smp, GNU tools. diff --git a/scripts/check_ai_disclosure.sh b/scripts/check_ai_disclosure.sh new file mode 100755 index 00000000..5a08a44c --- /dev/null +++ b/scripts/check_ai_disclosure.sh @@ -0,0 +1,129 @@ +#!/bin/bash +############################################################################### +# Copyright (c) 2026 Eclipse ThreadX contributors +# +# This program and the accompanying materials are made available under the +# terms of the MIT License which is available at +# https://opensource.org/licenses/MIT. +# +# AI Disclosure: This file was largely AI-generated by Claude Code (Opus 5). +# The AI-generated portions may be considered public domain (CC0-1.0) +# and not subject to the project's licence. The human contributor has +# reviewed and verified that the code is correct. +# +# SPDX-License-Identifier: MIT and CC0-1.0 +############################################################################### +# +# Fail the build if a file's AI disclosure comment has drifted from the one +# accepted form. +# +# A file that was edited with AI assistance carries exactly one line: +# +# Portions of this file were generated with AI assistance. +# +# written with the comment character that file already uses. It names no +# product, no model and no version, and a file carries at most one of it, ever. +# +# The text is fixed for a reason that is easy to miss. An earlier convention +# named the product and the model -- "Some portions generated by +# ()" -- and the result was not attribution but accumulation: each tool +# that touched a file failed to recognise the line another tool had left, and +# appended its own. Files reached three stacked lines, and one product ended +# up spelled four different ways across the tree, which made the record +# unusable for the one question it was meant to answer. +# +# Precise attribution lives on the commit instead, where the Assisted-by +# trailer is dated and attached to the diff it describes: +# +# scripts/count_assisted_by.sh --list -- +# +# A file-level flag answers WHETHER; the history answers WHO. A header line +# cannot hold the second honestly, because the code it names gets rewritten +# and the line stays. +# +# The AI Disclosure paragraph in a new file's copyright header is different and +# is not checked here: it keeps its product and model version, because a file +# is created once and that record cannot grow. +# +# This script is excluded from its own scan. It has to spell the rejected +# forms in order to look for them. + +set -euo pipefail + +readonly ROOT="$(cd "$(dirname "$(realpath "$0")")/.." && pwd)" +readonly SELF='scripts/check_ai_disclosure.sh' +readonly FIXED='Portions of this file were generated with AI assistance.' + +cd "${ROOT}" + +# Tracked files only. A build tree is not this repository's text to police, +# and scanning one would make the check depend on whether somebody had built. +mapfile -d '' -t FILES < <(git ls-files -z | grep -zZv "^${SELF}$") + +status=0 + +report() { + printf '%s\n\n' "$1" >&2 + printf '%s\n\n' "$2" >&2 + status=1 +} + +# 1. The superseded per-edit form, which names a product and a model. +hits="$(grep -nI 'Some portions generated by' -- "${FILES[@]}" 2>/dev/null || true)" +if [ -n "${hits}" ]; then + report "AI disclosure check FAILED: superseded per-edit form. + +Replace each of these with the fixed line, keeping the file's comment +character: + + ${FIXED}" "${hits}" +fi + +# 2. A doubled comment marker, such as '; //' or '@ //'. Assembly dialects +# differ -- armasm and IAR use ';', GNU as uses '@' or '//' -- and writing +# both is a symptom of a tool guessing rather than reading the file. +hits="$(grep -nIE '(//|[;@#])[[:space:]]*//[[:space:]]*Portions of this file were generated' \ + -- "${FILES[@]}" 2>/dev/null || true)" +if [ -n "${hits}" ]; then + report "AI disclosure check FAILED: doubled comment marker. + +Use the single comment character the rest of the file uses." "${hits}" +fi + +# 3. More than one disclosure line in a file. This is the failure the fixed +# text exists to prevent, so it is worth catching directly rather than +# inferring it from the form. +hits="$(grep -cIF "${FIXED}" -- "${FILES[@]}" 2>/dev/null | awk -F: '$NF > 1' || true)" +if [ -n "${hits}" ]; then + report "AI disclosure check FAILED: more than one disclosure line. + +A file carries at most one, ever. Keep the first and delete the rest; the +commit trailer, not the header, records which agents have touched the file." "${hits}" +fi + +# 4. A near miss. A line that is clearly meant to be the disclosure but is +# not spelled exactly right defeats every deduplication that follows it. +# +# Markdown is exempt from this one check. The contribution guide has to +# quote the accepted text and explain when it applies, so matching the bare +# phrase there reports prose rather than drift. A superseded form in a +# Markdown file is still caught by check 1. +mapfile -d '' -t SOURCES < <(printf '%s\0' "${FILES[@]}" | grep -zZv '\.md$' || true) +hits='' +if [ "${#SOURCES[@]}" -gt 0 ]; then + hits="$(grep -nIF 'AI assistance' -- "${SOURCES[@]}" 2>/dev/null \ + | grep -vF "${FIXED}" || true)" +fi +if [ -n "${hits}" ]; then + report "AI disclosure check FAILED: the text is not spelled exactly. + +The accepted text, character for character, is: + + ${FIXED}" "${hits}" +fi + +if [ "${status}" -eq 0 ]; then + echo "AI disclosure check passed." +fi + +exit "${status}" diff --git a/test/tx/cmake/thread_transition/CMakeLists.txt b/test/tx/cmake/thread_transition/CMakeLists.txt index a5659238..342ca839 100644 --- a/test/tx/cmake/thread_transition/CMakeLists.txt +++ b/test/tx/cmake/thread_transition/CMakeLists.txt @@ -1,4 +1,4 @@ -# Some portions generated by Codex (gpt-5.6-sol). +# Portions of this file were generated with AI assistance. cmake_minimum_required(VERSION 3.13 FATAL_ERROR) cmake_policy(SET CMP0057 NEW) -- cgit v1.3.1 From cf577c713719a2f1603624d7974ea55beb370d30 Mon Sep 17 00:00:00 2001 From: Frédéric Desbiens Date: Mon, 28 Sep 2026 14:08:13 -0400 Subject: Made ThreadX object names const-qualifiable behind an option (#761) Fixes #61 Object names are exposed as writable pointers throughout the kernel API, which rejects string literals in C++ and lets a caller modify a name an object still holds. Information services return those names through writable double pointers. Create services, control blocks, information services, the module manager and trace registration now preserve const qualification, behind TX_ENABLE_CONST_NAMES. The option defaults to off, so a build that says nothing gets exactly the types it got before. It is opt-in rather than opt-out because it changes the type of a public struct field: application code that copies a name into a writable CHAR * stops compiling, which is a reasonable thing to ask of a minor release and not of a patch one. Issue #780 tracks making it the default in 6.6. Two things the option reaches that its own call sites do not. TX_CHAR_TO_UCHAR_POINTER_CONVERT has exactly two users, both of them reading an object name in _tx_trace_object_register, and every form of that macro but the MISRA one casts the qualifier away without saying so; the conversion is now const in and const out, so nothing launders const to make the build pass. The FreeRTOS adapter holds the name pcTaskGetName retrieves in a TX_NAME_CONST pointer so that it tracks whichever declaration tx_thread_info_get has, and keeps its writable return type through an explicit MISRA C:2012 Rule 11.8 cast, because that signature is part of the FreeRTOS API. Default build: all seven host configurations and all five SMP configurations build with zero warnings and pass -- 113/113 on five host configurations, 100/100 on the two MISRA builds, 118/118 on SMP, 3/3 FreeRTOS. With TX_ENABLE_CONST_NAMES set, the host default and both MISRA configurations, the SMP trace configuration and the FreeRTOS adapter build with zero warnings and pass. Co-authored-by: Tilen Majerle Assisted-by: Codex (gpt-6-astra) Assisted-by: Claude Code (Opus 5) --- common/inc/tx_api.h | 133 ++++++++++++--------- common/inc/tx_trace.h | 4 +- common/inc/tx_user_sample.h | 9 +- common/src/tx_block_pool_create.c | 4 +- common/src/tx_block_pool_info_get.c | 4 +- common/src/tx_byte_pool_create.c | 4 +- common/src/tx_byte_pool_info_get.c | 4 +- common/src/tx_event_flags_create.c | 4 +- common/src/tx_event_flags_info_get.c | 4 +- common/src/tx_misra.c | 20 +++- common/src/tx_mutex_create.c | 4 +- common/src/tx_mutex_info_get.c | 4 +- common/src/tx_queue_create.c | 4 +- common/src/tx_queue_info_get.c | 4 +- common/src/tx_semaphore_create.c | 4 +- common/src/tx_semaphore_info_get.c | 4 +- common/src/tx_thread_create.c | 2 +- common/src/tx_thread_info_get.c | 4 +- common/src/tx_timer_create.c | 4 +- common/src/tx_timer_info_get.c | 4 +- common/src/tx_trace_object_register.c | 19 +-- common/src/txe_block_pool_create.c | 4 +- common/src/txe_block_pool_info_get.c | 4 +- common/src/txe_byte_pool_create.c | 4 +- common/src/txe_byte_pool_info_get.c | 4 +- common/src/txe_event_flags_create.c | 4 +- common/src/txe_event_flags_info_get.c | 4 +- common/src/txe_mutex_create.c | 4 +- common/src/txe_mutex_info_get.c | 4 +- common/src/txe_queue_create.c | 4 +- common/src/txe_queue_info_get.c | 4 +- common/src/txe_semaphore_create.c | 4 +- common/src/txe_semaphore_info_get.c | 4 +- common/src/txe_thread_create.c | 4 +- common/src/txe_thread_info_get.c | 4 +- common/src/txe_timer_create.c | 4 +- common/src/txe_timer_info_get.c | 4 +- common_modules/inc/txm_module.h | 2 +- .../module_lib/src/txm_block_pool_create.c | 4 +- .../module_lib/src/txm_block_pool_info_get.c | 4 +- .../module_lib/src/txm_byte_pool_create.c | 4 +- .../module_lib/src/txm_byte_pool_info_get.c | 4 +- .../module_lib/src/txm_event_flags_create.c | 4 +- .../module_lib/src/txm_event_flags_info_get.c | 4 +- common_modules/module_lib/src/txm_mutex_create.c | 4 +- common_modules/module_lib/src/txm_mutex_info_get.c | 4 +- common_modules/module_lib/src/txm_queue_create.c | 4 +- common_modules/module_lib/src/txm_queue_info_get.c | 4 +- .../module_lib/src/txm_semaphore_create.c | 4 +- .../module_lib/src/txm_semaphore_info_get.c | 4 +- common_modules/module_lib/src/txm_thread_create.c | 4 +- .../module_lib/src/txm_thread_info_get.c | 4 +- common_modules/module_lib/src/txm_timer_create.c | 4 +- common_modules/module_lib/src/txm_timer_info_get.c | 4 +- .../inc/txm_module_manager_dispatch.h | 64 +++++----- .../module_manager/inc/txm_module_manager_util.h | 2 +- .../src/txm_module_manager_thread_create.c | 3 +- .../module_manager/src/txm_module_manager_util.c | 2 +- common_smp/inc/tx_api.h | 101 +++++++++------- common_smp/inc/tx_trace.h | 6 +- common_smp/inc/tx_user_sample.h | 9 +- common_smp/src/tx_block_pool_create.c | 4 +- common_smp/src/tx_block_pool_info_get.c | 4 +- common_smp/src/tx_byte_pool_create.c | 4 +- common_smp/src/tx_byte_pool_info_get.c | 4 +- common_smp/src/tx_event_flags_create.c | 4 +- common_smp/src/tx_event_flags_info_get.c | 4 +- common_smp/src/tx_misra.c | 20 +++- common_smp/src/tx_mutex_create.c | 4 +- common_smp/src/tx_mutex_info_get.c | 4 +- common_smp/src/tx_queue_create.c | 4 +- common_smp/src/tx_queue_info_get.c | 4 +- common_smp/src/tx_semaphore_create.c | 4 +- common_smp/src/tx_semaphore_info_get.c | 4 +- common_smp/src/tx_thread_create.c | 2 +- common_smp/src/tx_thread_info_get.c | 4 +- common_smp/src/tx_timer_create.c | 4 +- common_smp/src/tx_timer_info_get.c | 4 +- common_smp/src/tx_trace_object_register.c | 19 +-- common_smp/src/txe_block_pool_create.c | 4 +- common_smp/src/txe_block_pool_info_get.c | 4 +- common_smp/src/txe_byte_pool_create.c | 4 +- common_smp/src/txe_byte_pool_info_get.c | 4 +- common_smp/src/txe_event_flags_create.c | 4 +- common_smp/src/txe_event_flags_info_get.c | 4 +- common_smp/src/txe_mutex_create.c | 4 +- common_smp/src/txe_mutex_info_get.c | 4 +- common_smp/src/txe_queue_create.c | 4 +- common_smp/src/txe_queue_info_get.c | 4 +- common_smp/src/txe_semaphore_create.c | 4 +- common_smp/src/txe_semaphore_info_get.c | 4 +- common_smp/src/txe_thread_create.c | 4 +- common_smp/src/txe_thread_info_get.c | 4 +- common_smp/src/txe_timer_create.c | 4 +- common_smp/src/txe_timer_info_get.c | 4 +- test/freertos/regression/txfr_test_harness.c | 20 ++-- .../regression/threadx_block_memory_basic_test.c | 4 +- .../threadx_block_memory_error_detection_test.c | 4 +- .../threadx_block_memory_information_test.c | 8 +- .../regression/threadx_byte_memory_basic_test.c | 4 +- .../threadx_byte_memory_information_test.c | 6 +- .../threadx_byte_memory_long_search_test.c | 4 +- .../smp/regression/threadx_event_flag_basic_test.c | 4 +- .../threadx_event_flag_information_test.c | 6 +- test/smp/regression/threadx_mutex_basic_test.c | 4 +- .../regression/threadx_mutex_information_test.c | 6 +- .../regression/threadx_queue_basic_one_word_test.c | 4 +- .../regression/threadx_queue_information_test.c | 6 +- test/smp/regression/threadx_semaphore_basic_test.c | 4 +- .../threadx_semaphore_information_test.c | 6 +- .../threadx_thread_basic_execution_test.c | 4 +- .../regression/threadx_thread_information_test.c | 6 +- .../regression/threadx_timer_information_test.c | 6 +- test/smp/regression/threadx_timer_simple_test.c | 4 +- test/smp/regression/threadx_trace_basic_test.c | 4 +- ...adx_module_manager_block_pool_parameters_test.c | 6 +- .../regression/threadx_block_memory_basic_test.c | 4 +- .../threadx_block_memory_error_detection_test.c | 4 +- .../threadx_block_memory_information_test.c | 8 +- .../tx/regression/threadx_byte_memory_basic_test.c | 4 +- .../threadx_byte_memory_information_test.c | 6 +- test/tx/regression/threadx_event_flag_basic_test.c | 4 +- .../threadx_event_flag_information_test.c | 6 +- test/tx/regression/threadx_mutex_basic_test.c | 4 +- .../tx/regression/threadx_mutex_information_test.c | 6 +- .../regression/threadx_queue_basic_one_word_test.c | 4 +- .../tx/regression/threadx_queue_information_test.c | 6 +- test/tx/regression/threadx_semaphore_basic_test.c | 4 +- .../threadx_semaphore_information_test.c | 6 +- .../threadx_thread_basic_execution_test.c | 2 +- .../regression/threadx_thread_information_test.c | 6 +- .../tx/regression/threadx_timer_information_test.c | 6 +- test/tx/regression/threadx_timer_simple_test.c | 4 +- test/tx/regression/threadx_trace_basic_test.c | 2 +- .../FreeRTOS/tx_freertos.c | 5 +- 135 files changed, 622 insertions(+), 318 deletions(-) (limited to 'common_modules/module_lib/src') diff --git a/common/inc/tx_api.h b/common/inc/tx_api.h index bf9de856..bac617e5 100644 --- a/common/inc/tx_api.h +++ b/common/inc/tx_api.h @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,6 +66,17 @@ extern "C" { #include "tx_port.h" +/* Define the qualifier applied to object name strings. Opting in makes every + object name a pointer to const, which the kernel and its tests are written + for. It is off by default because it changes the type of a public struct + field, and application code that copies a name into a writable pointer stops + compiling. */ +#ifdef TX_ENABLE_CONST_NAMES +#define TX_NAME_CONST const +#else +#define TX_NAME_CONST +#endif + #if (defined(TX_EXECUTION_PROFILE_ENABLE) && !defined(TX_ENABLE_EXECUTION_CHANGE_NOTIFY)) #include "tx_execution_profile.h" #endif @@ -368,7 +381,7 @@ typedef struct TX_TIMER_STRUCT ULONG tx_timer_id; /* Define the timer's name. */ - CHAR *tx_timer_name; + TX_NAME_CONST CHAR *tx_timer_name; /* Define the actual contents of the timer. This is the block that is used in the actual timer expiration processing. */ @@ -434,7 +447,7 @@ typedef struct TX_THREAD_STRUCT is typically defined to whitespace or a pointer type in tx_port.h. */ TX_THREAD_EXTENSION_0 - CHAR *tx_thread_name; /* Pointer to thread's name */ + TX_NAME_CONST CHAR *tx_thread_name; /* Pointer to thread's name */ UINT tx_thread_priority; /* Priority of thread (0-1023) */ UINT tx_thread_state; /* Thread's execution state */ UINT tx_thread_delayed_suspend; /* Delayed suspend flag */ @@ -595,7 +608,7 @@ typedef struct TX_BLOCK_POOL_STRUCT ULONG tx_block_pool_id; /* Define the block pool's name. */ - CHAR *tx_block_pool_name; + TX_NAME_CONST CHAR *tx_block_pool_name; /* Define the number of available memory blocks in the pool. */ UINT tx_block_pool_available; @@ -673,7 +686,7 @@ typedef struct TX_BYTE_POOL_STRUCT ULONG tx_byte_pool_id; /* Define the byte pool's name. */ - CHAR *tx_byte_pool_name; + TX_NAME_CONST CHAR *tx_byte_pool_name; /* Define the number of available bytes in the pool. */ ULONG tx_byte_pool_available; @@ -752,7 +765,7 @@ typedef struct TX_EVENT_FLAGS_GROUP_STRUCT ULONG tx_event_flags_group_id; /* Define the event flags group's name. */ - CHAR *tx_event_flags_group_name; + TX_NAME_CONST CHAR *tx_event_flags_group_name; /* Define the actual current event flags in this group. A zero in a particular bit indicates the event flag is not set. */ @@ -838,7 +851,7 @@ typedef struct TX_MUTEX_STRUCT ULONG tx_mutex_id; /* Define the mutex's name. */ - CHAR *tx_mutex_name; + TX_NAME_CONST CHAR *tx_mutex_name; /* Define the mutex ownership count. */ UINT tx_mutex_ownership_count; @@ -911,7 +924,7 @@ typedef struct TX_QUEUE_STRUCT ULONG tx_queue_id; /* Define the queue's name. */ - CHAR *tx_queue_name; + TX_NAME_CONST CHAR *tx_queue_name; /* Define the message size that was specified in queue creation. */ UINT tx_queue_message_size; @@ -990,7 +1003,7 @@ typedef struct TX_SEMAPHORE_STRUCT ULONG tx_semaphore_id; /* Define the semaphore's name. */ - CHAR *tx_semaphore_name; + TX_NAME_CONST CHAR *tx_semaphore_name; /* Define the actual semaphore count. A zero means that no semaphore instance is available. */ @@ -1417,10 +1430,10 @@ VOID tx_application_define(VOID *first_unused_memory); /* Define block memory pool management function prototypes. */ UINT _tx_block_allocate(TX_BLOCK_POOL *pool_ptr, VOID **block_ptr, ULONG wait_option); -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size); UINT _tx_block_pool_delete(TX_BLOCK_POOL *pool_ptr); -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); UINT _tx_block_pool_performance_info_get(TX_BLOCK_POOL *pool_ptr, ULONG *allocates, ULONG *releases, @@ -1435,20 +1448,20 @@ UINT _tx_block_release(VOID *block_ptr); application. */ UINT _txe_block_allocate(TX_BLOCK_POOL *pool_ptr, VOID **block_ptr, ULONG wait_option); -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txe_block_pool_delete(TX_BLOCK_POOL *pool_ptr); -UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); UINT _txe_block_pool_prioritize(TX_BLOCK_POOL *pool_ptr); UINT _txe_block_release(VOID *block_ptr); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING UINT _txr_block_allocate(TX_BLOCK_POOL *pool_ptr, VOID **block_ptr, ULONG wait_option); -UINT _txr_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txr_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txr_block_pool_delete(TX_BLOCK_POOL *pool_ptr); -UINT _txr_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _txr_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); UINT _txr_block_pool_prioritize(TX_BLOCK_POOL *pool_ptr); @@ -1460,10 +1473,10 @@ UINT _txr_block_release(VOID *block_ptr); UINT _tx_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); -UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size); UINT _tx_byte_pool_delete(TX_BYTE_POOL *pool_ptr); -UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool); UINT _tx_byte_pool_performance_info_get(TX_BYTE_POOL *pool_ptr, ULONG *allocates, ULONG *releases, @@ -1479,10 +1492,10 @@ UINT _tx_byte_release(VOID *memory_ptr); UINT _txe_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txe_byte_pool_delete(TX_BYTE_POOL *pool_ptr); -UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool); UINT _txe_byte_pool_prioritize(TX_BYTE_POOL *pool_ptr); @@ -1490,10 +1503,10 @@ UINT _txe_byte_release(VOID *memory_ptr); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING UINT _txr_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); -UINT _txr_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txr_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txr_byte_pool_delete(TX_BYTE_POOL *pool_ptr); -UINT _txr_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _txr_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool); UINT _txr_byte_pool_prioritize(TX_BYTE_POOL *pool_ptr); @@ -1503,11 +1516,11 @@ UINT _txr_byte_release(VOID *memory_ptr); /* Define event flags management function prototypes. */ -UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr); +UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr); UINT _tx_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); UINT _tx_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags, UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option); -UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group); UINT _tx_event_flags_performance_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG *sets, ULONG *gets, @@ -1522,22 +1535,22 @@ UINT _tx_event_flags_set_notify(TX_EVENT_FLAGS_GROUP *group_ptr, VOID (*e /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); UINT _txe_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); UINT _txe_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags, UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option); -UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group); UINT _txe_event_flags_set(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG flags_to_set, UINT set_option); UINT _txe_event_flags_set_notify(TX_EVENT_FLAGS_GROUP *group_ptr, VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *notify_group_ptr)); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING -UINT _txr_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT _txr_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); UINT _txr_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); UINT _txr_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags, UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option); -UINT _txr_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _txr_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group); UINT _txr_event_flags_set(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG flags_to_set, @@ -1553,10 +1566,10 @@ VOID _tx_initialize_kernel_enter(VOID); /* Define mutex management function prototypes. */ -UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit); +UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit); UINT _tx_mutex_delete(TX_MUTEX *mutex_ptr); UINT _tx_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option); -UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex); UINT _tx_mutex_performance_info_get(TX_MUTEX *mutex_ptr, ULONG *puts, ULONG *gets, @@ -1570,19 +1583,19 @@ UINT _tx_mutex_put(TX_MUTEX *mutex_ptr); /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); UINT _txe_mutex_delete(TX_MUTEX *mutex_ptr); UINT _txe_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option); -UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex); UINT _txe_mutex_prioritize(TX_MUTEX *mutex_ptr); UINT _txe_mutex_put(TX_MUTEX *mutex_ptr); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING -UINT _txr_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT _txr_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); UINT _txr_mutex_delete(TX_MUTEX *mutex_ptr); UINT _txr_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option); -UINT _txr_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _txr_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex); UINT _txr_mutex_prioritize(TX_MUTEX *mutex_ptr); @@ -1592,11 +1605,11 @@ UINT _txr_mutex_put(TX_MUTEX *mutex_ptr); /* Define queue management function prototypes. */ -UINT _tx_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _tx_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size); UINT _tx_queue_delete(TX_QUEUE *queue_ptr); UINT _tx_queue_flush(TX_QUEUE *queue_ptr); -UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); UINT _tx_queue_performance_info_get(TX_QUEUE *queue_ptr, ULONG *messages_sent, ULONG *messages_received, ULONG *empty_suspensions, ULONG *full_suspensions, ULONG *full_errors, ULONG *timeouts); @@ -1612,11 +1625,11 @@ UINT _tx_queue_front_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG wa /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size); UINT _txe_queue_delete(TX_QUEUE *queue_ptr); UINT _txe_queue_flush(TX_QUEUE *queue_ptr); -UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); UINT _txe_queue_prioritize(TX_QUEUE *queue_ptr); UINT _txe_queue_receive(TX_QUEUE *queue_ptr, VOID *destination_ptr, ULONG wait_option); @@ -1624,11 +1637,11 @@ UINT _txe_queue_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG wait_op UINT _txe_queue_send_notify(TX_QUEUE *queue_ptr, VOID (*queue_send_notify)(TX_QUEUE *notify_queue_ptr)); UINT _txe_queue_front_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG wait_option); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING -UINT _txr_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txr_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size); UINT _txr_queue_delete(TX_QUEUE *queue_ptr); UINT _txr_queue_flush(TX_QUEUE *queue_ptr); -UINT _txr_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _txr_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); UINT _txr_queue_prioritize(TX_QUEUE *queue_ptr); UINT _txr_queue_receive(TX_QUEUE *queue_ptr, VOID *destination_ptr, ULONG wait_option); @@ -1641,10 +1654,10 @@ UINT _txr_queue_front_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG w /* Define semaphore management function prototypes. */ UINT _tx_semaphore_ceiling_put(TX_SEMAPHORE *semaphore_ptr, ULONG ceiling); -UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count); +UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count); UINT _tx_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); UINT _tx_semaphore_get(TX_SEMAPHORE *semaphore_ptr, ULONG wait_option); -UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore); UINT _tx_semaphore_performance_info_get(TX_SEMAPHORE *semaphore_ptr, ULONG *puts, ULONG *gets, @@ -1659,10 +1672,10 @@ UINT _tx_semaphore_put_notify(TX_SEMAPHORE *semaphore_ptr, VOID (*semapho application. */ UINT _txe_semaphore_ceiling_put(TX_SEMAPHORE *semaphore_ptr, ULONG ceiling); -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); UINT _txe_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); UINT _txe_semaphore_get(TX_SEMAPHORE *semaphore_ptr, ULONG wait_option); -UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore); UINT _txe_semaphore_prioritize(TX_SEMAPHORE *semaphore_ptr); @@ -1670,10 +1683,10 @@ UINT _txe_semaphore_put(TX_SEMAPHORE *semaphore_ptr); UINT _txe_semaphore_put_notify(TX_SEMAPHORE *semaphore_ptr, VOID (*semaphore_put_notify)(TX_SEMAPHORE *notify_semaphore_ptr)); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING UINT _txr_semaphore_ceiling_put(TX_SEMAPHORE *semaphore_ptr, ULONG ceiling); -UINT _txr_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT _txr_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); UINT _txr_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); UINT _txr_semaphore_get(TX_SEMAPHORE *semaphore_ptr, ULONG wait_option); -UINT _txr_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _txr_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore); UINT _txr_semaphore_prioritize(TX_SEMAPHORE *semaphore_ptr); @@ -1686,7 +1699,7 @@ UINT _txr_semaphore_put_notify(TX_SEMAPHORE *semaphore_ptr, VOID (*semaph VOID _tx_thread_context_save(VOID); VOID _tx_thread_context_restore(VOID); -UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _tx_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, @@ -1694,7 +1707,7 @@ UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, UINT _tx_thread_delete(TX_THREAD *thread_ptr); UINT _tx_thread_entry_exit_notify(TX_THREAD *thread_ptr, VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type)); TX_THREAD *_tx_thread_identify(VOID); -UINT _tx_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _tx_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread); UINT _tx_thread_interrupt_control(UINT new_posture); @@ -1723,14 +1736,14 @@ UINT _tx_thread_wait_abort(TX_THREAD *thread_ptr); /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size); UINT _txe_thread_delete(TX_THREAD *thread_ptr); UINT _txe_thread_entry_exit_notify(TX_THREAD *thread_ptr, VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type)); -UINT _txe_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _txe_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread); UINT _txe_thread_preemption_change(TX_THREAD *thread_ptr, UINT new_threshold, @@ -1745,14 +1758,14 @@ UINT _txe_thread_terminate(TX_THREAD *thread_ptr); UINT _txe_thread_time_slice_change(TX_THREAD *thread_ptr, ULONG new_time_slice, ULONG *old_time_slice); UINT _txe_thread_wait_abort(TX_THREAD *thread_ptr); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING -UINT _txr_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txr_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size); UINT _txr_thread_delete(TX_THREAD *thread_ptr); UINT _txr_thread_entry_exit_notify(TX_THREAD *thread_ptr, VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type)); -UINT _txr_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _txr_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread); UINT _txr_thread_preemption_change(TX_THREAD *thread_ptr, UINT new_threshold, @@ -1772,12 +1785,12 @@ UINT _txr_thread_wait_abort(TX_THREAD *thread_ptr); UINT _tx_timer_activate(TX_TIMER *timer_ptr); UINT _tx_timer_change(TX_TIMER *timer_ptr, ULONG initial_ticks, ULONG reschedule_ticks); -UINT _tx_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _tx_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate); UINT _tx_timer_deactivate(TX_TIMER *timer_ptr); UINT _tx_timer_delete(TX_TIMER *timer_ptr); -UINT _tx_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _tx_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer); UINT _tx_timer_performance_info_get(TX_TIMER *timer_ptr, ULONG *activates, ULONG *reactivates, ULONG *deactivates, ULONG *expirations, ULONG *expiration_adjusts); @@ -1793,22 +1806,22 @@ VOID _tx_time_set(ULONG new_time); UINT _txe_timer_activate(TX_TIMER *timer_ptr); UINT _txe_timer_change(TX_TIMER *timer_ptr, ULONG initial_ticks, ULONG reschedule_ticks); -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); UINT _txe_timer_deactivate(TX_TIMER *timer_ptr); UINT _txe_timer_delete(TX_TIMER *timer_ptr); -UINT _txe_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _txe_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer); #ifdef TX_ENABLE_MULTI_ERROR_CHECKING UINT _txr_timer_activate(TX_TIMER *timer_ptr); UINT _txr_timer_change(TX_TIMER *timer_ptr, ULONG initial_ticks, ULONG reschedule_ticks); -UINT _txr_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txr_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); UINT _txr_timer_deactivate(TX_TIMER *timer_ptr); UINT _txr_timer_delete(TX_TIMER *timer_ptr); -UINT _txr_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _txr_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer); #endif @@ -1924,7 +1937,8 @@ TX_THREAD *_tx_misra_ulong_to_thread_pointer_convert(ULONG value); VOID *_tx_misra_timer_indirect_to_void_pointer_convert(TX_TIMER_INTERNAL **pointer); CHAR *_tx_misra_const_char_to_char_pointer_convert(const char *pointer); TX_THREAD *_tx_misra_void_to_thread_pointer_convert(VOID *pointer); -UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer); +const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer); +const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *pointer, ULONG amount); VOID _tx_misra_event_flags_group_not_used(TX_EVENT_FLAGS_GROUP *group_ptr); VOID _tx_misra_event_flags_set_notify_not_used(VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *notify_group_ptr)); VOID _tx_misra_queue_not_used(TX_QUEUE *queue_ptr); @@ -1936,6 +1950,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #define TX_MEMSET(a,b,c) _tx_misra_memset((a), (UINT) (b), (UINT) (c)) #define TX_UCHAR_POINTER_ADD(a,b) _tx_misra_uchar_pointer_add((UCHAR *) (a), (ULONG) (b)) +#define TX_CONST_UCHAR_POINTER_ADD(a,b) _tx_misra_const_uchar_pointer_add((const UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_SUB(a,b) _tx_misra_uchar_pointer_sub((UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_DIF(a,b) _tx_misra_uchar_pointer_dif((UCHAR *) (a), (UCHAR *) (b)) #define TX_ULONG_POINTER_ADD(a,b) _tx_misra_ulong_pointer_add((ULONG *) (a), (ULONG) (b)) @@ -1996,6 +2011,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #endif #define TX_UCHAR_POINTER_ADD(a,b) (((UCHAR *) (a)) + ((UINT) (b))) +#define TX_CONST_UCHAR_POINTER_ADD(a,b) (((const UCHAR *) (a)) + ((UINT) (b))) #define TX_UCHAR_POINTER_SUB(a,b) (((UCHAR *) (a)) - ((UINT) (b))) #define TX_UCHAR_POINTER_DIF(a,b) ((ULONG)(((UCHAR *) (a)) - ((UCHAR *) (b)))) #define TX_ULONG_POINTER_ADD(a,b) (((ULONG *) (a)) + ((UINT) (b))) @@ -2043,7 +2059,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #endif #define TX_CONST_CHAR_TO_CHAR_POINTER_CONVERT(a) ((CHAR *) ((VOID *) (a))) #define TX_VOID_TO_THREAD_POINTER_CONVERT(a) ((TX_THREAD *) ((VOID *) (a))) -#define TX_CHAR_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR *) ((VOID *) (a))) +#define TX_CHAR_TO_UCHAR_POINTER_CONVERT(a) ((const UCHAR *) ((const VOID *) (a))) #ifndef TX_EVENT_FLAGS_GROUP_NOT_USED #define TX_EVENT_FLAGS_GROUP_NOT_USED(a) ((void)(a)) #endif @@ -2341,4 +2357,3 @@ void __ghs_rnerr(char *errMsg, int stackLevels, int stackTraceDisplay, void *hex #endif #endif - diff --git a/common/inc/tx_trace.h b/common/inc/tx_trace.h index 10b96761..8f2667ca 100644 --- a/common/inc/tx_trace.h +++ b/common/inc/tx_trace.h @@ -453,7 +453,7 @@ TRACE_DECLARE ULONG _tx_trace_registry_search_start #define TX_TRACE_INITIALIZE _tx_trace_initialize(); -#define TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) _tx_trace_object_register((UCHAR) (t), (VOID *) (p), (CHAR *) (n), (ULONG) (a), (ULONG) (b)); +#define TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) _tx_trace_object_register((UCHAR) (t), (VOID *) (p), (n), (ULONG) (a), (ULONG) (b)); #define TX_TRACE_OBJECT_UNREGISTER(o) _tx_trace_object_unregister((VOID *) (o)); #ifndef TX_TRACE_IN_LINE_INSERT #define TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,e) \ @@ -529,7 +529,7 @@ UCHAR *_tx_misra_entry_to_uchar_pointer_convert(TX_TRACE_BUFFE /* Define internal function prototypes of the trace component, only if compiling ThreadX source code. */ VOID _tx_trace_initialize(VOID); -VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2); +VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, TX_NAME_CONST CHAR *object_name, ULONG parameter_1, ULONG parameter_2); VOID _tx_trace_object_unregister(VOID *object_ptr); diff --git a/common/inc/tx_user_sample.h b/common/inc/tx_user_sample.h index 0733c16c..676ff38c 100644 --- a/common/inc/tx_user_sample.h +++ b/common/inc/tx_user_sample.h @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -107,6 +109,12 @@ #define TX_TIMER_TICKS_PER_SECOND (100UL) */ +/* Define this option to qualify object names as pointers to const. */ + +/* +#define TX_ENABLE_CONST_NAMES +*/ + /* Determine if there is a FileX pointer in the thread control block. By default, the pointer is there for legacy/backwards compatibility. The pointer must also be there for applications using FileX. @@ -295,4 +303,3 @@ */ #endif - diff --git a/common/src/tx_block_pool_create.c b/common/src/tx_block_pool_create.c index 1d2c803c..8781dc78 100644 --- a/common/src/tx_block_pool_create.c +++ b/common/src/tx_block_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size) { diff --git a/common/src/tx_block_pool_info_get.c b/common/src/tx_block_pool_info_get.c index 5998f1db..5e1e89fd 100644 --- a/common/src/tx_block_pool_info_get.c +++ b/common/src/tx_block_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) { diff --git a/common/src/tx_byte_pool_create.c b/common/src/tx_byte_pool_create.c index 21abbe35..f5c8460d 100644 --- a/common/src/tx_byte_pool_create.c +++ b/common/src/tx_byte_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, ULONG pool_size) +UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/tx_byte_pool_info_get.c b/common/src/tx_byte_pool_info_get.c index bd096440..e9e9efa4 100644 --- a/common/src/tx_byte_pool_info_get.c +++ b/common/src/tx_byte_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) { diff --git a/common/src/tx_event_flags_create.c b/common/src/tx_event_flags_create.c index 2a9c042d..361fafa4 100644 --- a/common/src/tx_event_flags_create.c +++ b/common/src/tx_event_flags_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr) +UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/tx_event_flags_info_get.c b/common/src/tx_event_flags_info_get.c index 21e85c9a..51ec345f 100644 --- a/common/src/tx_event_flags_info_get.c +++ b/common/src/tx_event_flags_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) { diff --git a/common/src/tx_misra.c b/common/src/tx_misra.c index 9abf12f0..7ac5dc68 100644 --- a/common/src/tx_misra.c +++ b/common/src/tx_misra.c @@ -820,15 +820,29 @@ UCHAR *_tx_misra_entry_to_uchar_pointer_convert(TX_TRACE_BUFFER_ENTRY *pointer) /***********************************************************************************************/ /***********************************************************************************************/ /** */ -/** UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer); */ +/** const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer); */ /** */ /***********************************************************************************************/ /***********************************************************************************************/ -UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer) +const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer) { /* Return a UCHAR pointer. */ - return((UCHAR *) ((VOID *) pointer)); + return((const UCHAR *) ((const VOID *) pointer)); +} + + +/***********************************************************************************************/ +/***********************************************************************************************/ +/** */ +/** const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *ptr, ULONG amount); */ +/** */ +/***********************************************************************************************/ +/***********************************************************************************************/ +const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *ptr, ULONG amount) +{ + ptr = ptr + amount; + return(ptr); } diff --git a/common/src/tx_mutex_create.c b/common/src/tx_mutex_create.c index 436c01f5..a1f5eba8 100644 --- a/common/src/tx_mutex_create.c +++ b/common/src/tx_mutex_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit) +UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/tx_mutex_info_get.c b/common/src/tx_mutex_info_get.c index a24d1e30..3be2606b 100644 --- a/common/src/tx_mutex_info_get.c +++ b/common/src/tx_mutex_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) { diff --git a/common/src/tx_queue_create.c b/common/src/tx_queue_create.c index 59ae154e..afb5648d 100644 --- a/common/src/tx_queue_create.c +++ b/common/src/tx_queue_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _tx_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size) { diff --git a/common/src/tx_queue_info_get.c b/common/src/tx_queue_info_get.c index d0ecb2b6..e25da54e 100644 --- a/common/src/tx_queue_info_get.c +++ b/common/src/tx_queue_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) { diff --git a/common/src/tx_semaphore_create.c b/common/src/tx_semaphore_create.c index 849f5d3b..14553ca8 100644 --- a/common/src/tx_semaphore_create.c +++ b/common/src/tx_semaphore_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count) +UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/tx_semaphore_info_get.c b/common/src/tx_semaphore_info_get.c index 89fd9423..2ffad1f7 100644 --- a/common/src/tx_semaphore_info_get.c +++ b/common/src/tx_semaphore_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) { diff --git a/common/src/tx_thread_create.c b/common/src/tx_thread_create.c index 7c9d054c..cff4db40 100644 --- a/common/src/tx_thread_create.c +++ b/common/src/tx_thread_create.c @@ -78,7 +78,7 @@ /* _tx_timer_initialize Create system timer thread */ /* */ /**************************************************************************/ -UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, VOID (*entry_function)(ULONG id), ULONG entry_input, +UINT _tx_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG id), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start) { diff --git a/common/src/tx_thread_info_get.c b/common/src/tx_thread_info_get.c index 740a3b95..cd0df6ec 100644 --- a/common/src/tx_thread_info_get.c +++ b/common/src/tx_thread_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _tx_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) { diff --git a/common/src/tx_timer_create.c b/common/src/tx_timer_create.c index 30dd4e11..15eb866f 100644 --- a/common/src/tx_timer_create.c +++ b/common/src/tx_timer_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -67,7 +69,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _tx_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG id), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate) { diff --git a/common/src/tx_timer_info_get.c b/common/src/tx_timer_info_get.c index 31c801f9..0811b592 100644 --- a/common/src/tx_timer_info_get.c +++ b/common/src/tx_timer_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -68,7 +70,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _tx_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) { diff --git a/common/src/tx_trace_object_register.c b/common/src/tx_trace_object_register.c index 741896a5..a0d0f494 100644 --- a/common/src/tx_trace_object_register.c +++ b/common/src/tx_trace_object_register.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2) +VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, TX_NAME_CONST CHAR *object_name, ULONG parameter_1, ULONG parameter_2) { #ifdef TX_ENABLE_EVENT_TRACE @@ -75,6 +77,7 @@ UINT i, entries; UINT found, loop_break; TX_THREAD *thread_ptr; UCHAR *work_ptr; +const UCHAR *name_ptr; TX_TRACE_OBJECT_ENTRY *entry_ptr; @@ -211,21 +214,21 @@ TX_TRACE_OBJECT_ENTRY *entry_ptr; for (i = ((ULONG) 0); i < (((ULONG) TX_TRACE_OBJECT_REGISTRY_NAME)-((ULONG) 1)); i++) { - /* Setup work pointer to the object name character. */ - work_ptr = TX_CHAR_TO_UCHAR_POINTER_CONVERT(object_name); - work_ptr = TX_UCHAR_POINTER_ADD(work_ptr, i); + /* Setup name pointer to the object name character. */ + name_ptr = TX_CHAR_TO_UCHAR_POINTER_CONVERT(object_name); + name_ptr = TX_CONST_UCHAR_POINTER_ADD(name_ptr, i); - /* Determine if object_name (work_ptr) is null. */ - if (work_ptr == TX_NULL) + /* Determine if object_name (name_ptr) is null. */ + if (name_ptr == TX_NULL) { break; } /* Copy a character of the name. */ - entry_ptr -> tx_trace_object_entry_name[i] = (UCHAR) *work_ptr; + entry_ptr -> tx_trace_object_entry_name[i] = (UCHAR) *name_ptr; /* Determine if we are at the end. */ - if (*work_ptr == ((UCHAR) 0)) + if (*name_ptr == ((UCHAR) 0)) { break; } diff --git a/common/src/txe_block_pool_create.c b/common/src/txe_block_pool_create.c index 08ef7e69..b4c7e13f 100644 --- a/common/src/txe_block_pool_create.c +++ b/common/src/txe_block_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { diff --git a/common/src/txe_block_pool_info_get.c b/common/src/txe_block_pool_info_get.c index f91ca206..4c6003d7 100644 --- a/common/src/txe_block_pool_info_get.c +++ b/common/src/txe_block_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) { diff --git a/common/src/txe_byte_pool_create.c b/common/src/txe_byte_pool_create.c index 99a89698..9ae72ee9 100644 --- a/common/src/txe_byte_pool_create.c +++ b/common/src/txe_byte_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -73,7 +75,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/txe_byte_pool_info_get.c b/common/src/txe_byte_pool_info_get.c index 85e7a233..a83c907b 100644 --- a/common/src/txe_byte_pool_info_get.c +++ b/common/src/txe_byte_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) { diff --git a/common/src/txe_event_flags_create.c b/common/src/txe_event_flags_create.c index 4e3fed77..20984738 100644 --- a/common/src/txe_event_flags_create.c +++ b/common/src/txe_event_flags_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size) +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/txe_event_flags_info_get.c b/common/src/txe_event_flags_info_get.c index e551d025..d7bddca4 100644 --- a/common/src/txe_event_flags_info_get.c +++ b/common/src/txe_event_flags_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) { diff --git a/common/src/txe_mutex_create.c b/common/src/txe_mutex_create.c index 392f8b0e..a0461294 100644 --- a/common/src/txe_mutex_create.c +++ b/common/src/txe_mutex_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/txe_mutex_info_get.c b/common/src/txe_mutex_info_get.c index f4ef4168..93b43f91 100644 --- a/common/src/txe_mutex_info_get.c +++ b/common/src/txe_mutex_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) { diff --git a/common/src/txe_queue_create.c b/common/src/txe_queue_create.c index 185289fe..79aef4a0 100644 --- a/common/src/txe_queue_create.c +++ b/common/src/txe_queue_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size) { diff --git a/common/src/txe_queue_info_get.c b/common/src/txe_queue_info_get.c index 78d98392..90fdd410 100644 --- a/common/src/txe_queue_info_get.c +++ b/common/src/txe_queue_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) { diff --git a/common/src/txe_semaphore_create.c b/common/src/txe_semaphore_create.c index a190b03c..d538f5fe 100644 --- a/common/src/txe_semaphore_create.c +++ b/common/src/txe_semaphore_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common/src/txe_semaphore_info_get.c b/common/src/txe_semaphore_info_get.c index 7695028e..85747dc3 100644 --- a/common/src/txe_semaphore_info_get.c +++ b/common/src/txe_semaphore_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) { diff --git a/common/src/txe_thread_create.c b/common/src/txe_thread_create.c index d319bc9e..cc5033b2 100644 --- a/common/src/txe_thread_create.c +++ b/common/src/txe_thread_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -79,7 +81,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG id), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, diff --git a/common/src/txe_thread_info_get.c b/common/src/txe_thread_info_get.c index ad1db3f7..19e248eb 100644 --- a/common/src/txe_thread_info_get.c +++ b/common/src/txe_thread_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _txe_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) { diff --git a/common/src/txe_timer_create.c b/common/src/txe_timer_create.c index 02cf7c1a..8c481bde 100644 --- a/common/src/txe_timer_create.c +++ b/common/src/txe_timer_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG id), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size) { diff --git a/common/src/txe_timer_info_get.c b/common/src/txe_timer_info_get.c index 16ac5f64..be2e9a13 100644 --- a/common/src/txe_timer_info_get.c +++ b/common/src/txe_timer_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _txe_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) { diff --git a/common_modules/inc/txm_module.h b/common_modules/inc/txm_module.h index 4e84dcbb..a823c2c0 100644 --- a/common_modules/inc/txm_module.h +++ b/common_modules/inc/txm_module.h @@ -624,7 +624,7 @@ UINT _txm_module_manager_memory_load(TXM_MODULE_INSTANCE *module_instance, CHAR UINT _txm_module_manager_properties_get(TXM_MODULE_INSTANCE *module_instance, ULONG *module_properties_ptr); UINT _txm_module_manager_start(TXM_MODULE_INSTANCE *module_instance); UINT _txm_module_manager_stop(TXM_MODULE_INSTANCE *module_instance); -UINT _txm_module_manager_thread_create(TX_THREAD *thread_ptr, CHAR *name, VOID (*shell_function)(TX_THREAD *, TXM_MODULE_INSTANCE *), +UINT _txm_module_manager_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name, VOID (*shell_function)(TX_THREAD *, TXM_MODULE_INSTANCE *), VOID (*entry_function)(ULONG), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size, TXM_MODULE_INSTANCE *module_instance); diff --git a/common_modules/module_lib/src/txm_block_pool_create.c b/common_modules/module_lib/src/txm_block_pool_create.c index 90838e3b..aa9a6180 100644 --- a/common_modules/module_lib/src/txm_block_pool_create.c +++ b/common_modules/module_lib/src/txm_block_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_block_pool_info_get.c b/common_modules/module_lib/src/txm_block_pool_info_get.c index fa4ea686..944281e3 100644 --- a/common_modules/module_lib/src/txm_block_pool_info_get.c +++ b/common_modules/module_lib/src/txm_block_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) +UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_byte_pool_create.c b/common_modules/module_lib/src/txm_byte_pool_create.c index d7775e3f..d0cc76c6 100644 --- a/common_modules/module_lib/src/txm_byte_pool_create.c +++ b/common_modules/module_lib/src/txm_byte_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -63,7 +65,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_byte_pool_info_get.c b/common_modules/module_lib/src/txm_byte_pool_info_get.c index 1ad38f48..d6b4a3d6 100644 --- a/common_modules/module_lib/src/txm_byte_pool_info_get.c +++ b/common_modules/module_lib/src/txm_byte_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) +UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_event_flags_create.c b/common_modules/module_lib/src/txm_event_flags_create.c index 76f1fe31..b4e155c1 100644 --- a/common_modules/module_lib/src/txm_event_flags_create.c +++ b/common_modules/module_lib/src/txm_event_flags_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -60,7 +62,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size) +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_event_flags_info_get.c b/common_modules/module_lib/src/txm_event_flags_info_get.c index eedcce1f..ebcee339 100644 --- a/common_modules/module_lib/src/txm_event_flags_info_get.c +++ b/common_modules/module_lib/src/txm_event_flags_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) +UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_mutex_create.c b/common_modules/module_lib/src/txm_mutex_create.c index f50fd52f..5dc53dd9 100644 --- a/common_modules/module_lib/src/txm_mutex_create.c +++ b/common_modules/module_lib/src/txm_mutex_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -61,7 +63,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_mutex_info_get.c b/common_modules/module_lib/src/txm_mutex_info_get.c index 8e63c779..534e110e 100644 --- a/common_modules/module_lib/src/txm_mutex_info_get.c +++ b/common_modules/module_lib/src/txm_mutex_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) +UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_queue_create.c b/common_modules/module_lib/src/txm_queue_create.c index a18b9f85..982c3587 100644 --- a/common_modules/module_lib/src/txm_queue_create.c +++ b/common_modules/module_lib/src/txm_queue_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -62,7 +64,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size) +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_queue_info_get.c b/common_modules/module_lib/src/txm_queue_info_get.c index c66a3d7e..8627a45a 100644 --- a/common_modules/module_lib/src/txm_queue_info_get.c +++ b/common_modules/module_lib/src/txm_queue_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) +UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_semaphore_create.c b/common_modules/module_lib/src/txm_semaphore_create.c index 229b46cd..fbce2d54 100644 --- a/common_modules/module_lib/src/txm_semaphore_create.c +++ b/common_modules/module_lib/src/txm_semaphore_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -60,7 +62,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_semaphore_info_get.c b/common_modules/module_lib/src/txm_semaphore_info_get.c index 2bdfa2c0..128afae7 100644 --- a/common_modules/module_lib/src/txm_semaphore_info_get.c +++ b/common_modules/module_lib/src/txm_semaphore_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) +UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_thread_create.c b/common_modules/module_lib/src/txm_thread_create.c index 8b1bc367..f17a0185 100644 --- a/common_modules/module_lib/src/txm_thread_create.c +++ b/common_modules/module_lib/src/txm_thread_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size) +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_thread_info_get.c b/common_modules/module_lib/src/txm_thread_info_get.c index d956c031..e50fc446 100644 --- a/common_modules/module_lib/src/txm_thread_info_get.c +++ b/common_modules/module_lib/src/txm_thread_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -67,7 +69,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) +UINT _txe_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_timer_create.c b/common_modules/module_lib/src/txm_timer_create.c index d65989eb..7adba901 100644 --- a/common_modules/module_lib/src/txm_timer_create.c +++ b/common_modules/module_lib/src/txm_timer_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, VOID (*expiration_function)(ULONG), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size) +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size) { UINT return_value; diff --git a/common_modules/module_lib/src/txm_timer_info_get.c b/common_modules/module_lib/src/txm_timer_info_get.c index f918ca67..d431ed93 100644 --- a/common_modules/module_lib/src/txm_timer_info_get.c +++ b/common_modules/module_lib/src/txm_timer_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -63,7 +65,7 @@ /* Module application code */ /* */ /**************************************************************************/ -UINT _txe_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) +UINT _txe_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) { UINT return_value; diff --git a/common_modules/module_manager/inc/txm_module_manager_dispatch.h b/common_modules/module_manager/inc/txm_module_manager_dispatch.h index 9210c989..e8c0629b 100644 --- a/common_modules/module_manager/inc/txm_module_manager_dispatch.h +++ b/common_modules/module_manager/inc/txm_module_manager_dispatch.h @@ -54,7 +54,7 @@ ALIGN_TYPE return_value; #ifndef TXM_BLOCK_POOL_CREATE_CALL_NOT_USED /* UINT _txe_block_pool_create( TX_BLOCK_POOL *pool_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 ULONG block_size, -> extra_parameters[0] VOID *pool_start, -> extra_parameters[1] ULONG pool_size, -> extra_parameters[2] @@ -82,7 +82,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_block_pool_create( (TX_BLOCK_POOL *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (ULONG) extra_parameters[0], (VOID *) extra_parameters[1], (ULONG) extra_parameters[2], @@ -126,7 +126,7 @@ ALIGN_TYPE return_value; #ifndef TXM_BLOCK_POOL_INFO_GET_CALL_NOT_USED /* UINT _txe_block_pool_info_get( TX_BLOCK_POOL *pool_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *available_blocks, -> extra_parameters[0] ULONG *total_blocks, -> extra_parameters[1] TX_THREAD **first_suspended, -> extra_parameters[2] @@ -167,7 +167,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_block_pool_info_get( (TX_BLOCK_POOL *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (ULONG *) extra_parameters[1], (TX_THREAD **) extra_parameters[2], @@ -363,7 +363,7 @@ ALIGN_TYPE return_value; #ifndef TXM_BYTE_POOL_CREATE_CALL_NOT_USED /* UINT _txe_byte_pool_create( TX_BYTE_POOL *pool_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 VOID *pool_start, -> extra_parameters[0] ULONG pool_size, -> extra_parameters[1] UINT pool_control_block_size -> extra_parameters[2] @@ -390,7 +390,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_byte_pool_create( (TX_BYTE_POOL *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (VOID *) extra_parameters[0], (ULONG) extra_parameters[1], (UINT) extra_parameters[2] @@ -433,7 +433,7 @@ ALIGN_TYPE return_value; #ifndef TXM_BYTE_POOL_INFO_GET_CALL_NOT_USED /* UINT _txe_byte_pool_info_get( TX_BYTE_POOL *pool_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *available_bytes, -> extra_parameters[0] ULONG *fragments, -> extra_parameters[1] TX_THREAD **first_suspended, -> extra_parameters[2] @@ -474,7 +474,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_byte_pool_info_get( (TX_BYTE_POOL *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (ULONG *) extra_parameters[1], (TX_THREAD **) extra_parameters[2], @@ -666,7 +666,7 @@ ALIGN_TYPE block_header_start; #ifndef TXM_EVENT_FLAGS_CREATE_CALL_NOT_USED /* UINT _txe_event_flags_create( TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 UINT event_control_block_size -> param_2 ); */ static ALIGN_TYPE _txm_module_manager_tx_event_flags_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2) @@ -685,7 +685,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_event_flags_create( (TX_EVENT_FLAGS_GROUP *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (UINT) param_2 ); return(return_value); @@ -762,7 +762,7 @@ ALIGN_TYPE return_value; #ifndef TXM_EVENT_FLAGS_INFO_GET_CALL_NOT_USED /* UINT _txe_event_flags_info_get( TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *current_flags, -> extra_parameters[0] TX_THREAD **first_suspended, -> extra_parameters[1] ULONG *suspended_count, -> extra_parameters[2] @@ -799,7 +799,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_event_flags_info_get( (TX_EVENT_FLAGS_GROUP *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (TX_THREAD **) extra_parameters[1], (ULONG *) extra_parameters[2], @@ -969,7 +969,7 @@ VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *); #ifndef TXM_MUTEX_CREATE_CALL_NOT_USED /* UINT _txe_mutex_create( TX_MUTEX *mutex_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 UINT inherit, -> extra_parameters[0] UINT mutex_control_block_size -> extra_parameters[1] ); */ @@ -992,7 +992,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_mutex_create( (TX_MUTEX *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (UINT) extra_parameters[0], (UINT) extra_parameters[1] ); @@ -1058,7 +1058,7 @@ ALIGN_TYPE return_value; #ifndef TXM_MUTEX_INFO_GET_CALL_NOT_USED /* UINT _txe_mutex_info_get( TX_MUTEX *mutex_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *count, -> extra_parameters[0] TX_THREAD **owner, -> extra_parameters[1] TX_THREAD **first_suspended, -> extra_parameters[2] @@ -1099,7 +1099,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_mutex_info_get( (TX_MUTEX *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (TX_THREAD **) extra_parameters[1], (TX_THREAD **) extra_parameters[2], @@ -1262,7 +1262,7 @@ ALIGN_TYPE return_value; #ifndef TXM_QUEUE_CREATE_CALL_NOT_USED /* UINT _txe_queue_create( TX_QUEUE *queue_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 UINT message_size, -> extra_parameters[0] VOID *queue_start, -> extra_parameters[1] ULONG queue_size, -> extra_parameters[2] @@ -1290,7 +1290,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_queue_create( (TX_QUEUE *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (UINT) extra_parameters[0], (VOID *) extra_parameters[1], (ULONG) extra_parameters[2], @@ -1388,7 +1388,7 @@ TX_QUEUE *queue_ptr; #ifndef TXM_QUEUE_INFO_GET_CALL_NOT_USED /* UINT _txe_queue_info_get( TX_QUEUE *queue_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *enqueued, -> extra_parameters[0] ULONG *available_storage, -> extra_parameters[1] TX_THREAD **first_suspended, -> extra_parameters[2] @@ -1429,7 +1429,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_queue_info_get( (TX_QUEUE *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (ULONG *) extra_parameters[1], (TX_THREAD **) extra_parameters[2], @@ -1704,7 +1704,7 @@ ALIGN_TYPE return_value; #ifndef TXM_SEMAPHORE_CREATE_CALL_NOT_USED /* UINT _txe_semaphore_create( TX_SEMAPHORE *semaphore_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 ULONG initial_count, -> extra_parameters[0] UINT semaphore_control_block_size -> extra_parameters[1] ); */ @@ -1727,7 +1727,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_semaphore_create( (TX_SEMAPHORE *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (ULONG) extra_parameters[0], (UINT) extra_parameters[1] ); @@ -1793,7 +1793,7 @@ ALIGN_TYPE return_value; #ifndef TXM_SEMAPHORE_INFO_GET_CALL_NOT_USED /* UINT _txe_semaphore_info_get( TX_SEMAPHORE *semaphore_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 ULONG *current_value, -> extra_parameters[0] TX_THREAD **first_suspended, -> extra_parameters[1] ULONG *suspended_count, -> extra_parameters[2] @@ -1830,7 +1830,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_semaphore_info_get( (TX_SEMAPHORE *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (ULONG *) extra_parameters[0], (TX_THREAD **) extra_parameters[1], (ULONG *) extra_parameters[2], @@ -2018,7 +2018,7 @@ VOID (*semaphore_put_notify)(TX_SEMAPHORE *); #ifndef TXM_THREAD_CREATE_CALL_NOT_USED /* UINT _txe_thread_create( TX_THREAD *thread_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 VOID (*entry_function)(ULONG entry_input), -> extra_parameters[0] ULONG entry_input, -> extra_parameters[1] VOID *stack_start, -> extra_parameters[2] @@ -2057,7 +2057,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txm_module_manager_thread_create( (TX_THREAD *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, module_instance -> txm_module_instance_shell_entry_function, (VOID (*)(ULONG entry_input)) extra_parameters[0], (ULONG) extra_parameters[1], @@ -2194,7 +2194,7 @@ ALIGN_TYPE return_value; #ifndef TXM_THREAD_INFO_GET_CALL_NOT_USED /* UINT _txe_thread_info_get( TX_THREAD *thread_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 UINT *state, -> extra_parameters[0] ULONG *run_count, -> extra_parameters[1] UINT *priority, -> extra_parameters[2] @@ -2243,7 +2243,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_thread_info_get( (TX_THREAD *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (UINT *) extra_parameters[0], (ULONG *) extra_parameters[1], (UINT *) extra_parameters[2], @@ -2811,7 +2811,7 @@ ALIGN_TYPE return_value; #ifndef TXM_TIMER_CREATE_CALL_NOT_USED /* UINT _txe_timer_create( TX_TIMER *timer_ptr, -> param_0 - CHAR *name_ptr, -> param_1 + TX_NAME_CONST CHAR *name_ptr, -> param_1 VOID (*expiration_function)(ULONG), -> extra_parameters[0] ULONG expiration_input, -> extra_parameters[1] ULONG initial_ticks, -> extra_parameters[2] @@ -2854,7 +2854,7 @@ VOID (*expiration_function)(ULONG); return_value = (ALIGN_TYPE) _txe_timer_create( (TX_TIMER *) param_0, - (CHAR *) param_1, + (TX_NAME_CONST CHAR *) param_1, (VOID (*)(ULONG)) expiration_function, (ULONG) extra_parameters[1], (ULONG) extra_parameters[2], @@ -2937,7 +2937,7 @@ ALIGN_TYPE return_value; #ifndef TXM_TIMER_INFO_GET_CALL_NOT_USED /* UINT _txe_timer_info_get( TX_TIMER *timer_ptr, -> param_0 - CHAR **name, -> param_1 + TX_NAME_CONST CHAR **name, -> param_1 UINT *active, -> extra_parameters[0] ULONG *remaining_ticks, -> extra_parameters[1] ULONG *reschedule_ticks, -> extra_parameters[2] @@ -2974,7 +2974,7 @@ ALIGN_TYPE return_value; return_value = (ALIGN_TYPE) _txe_timer_info_get( (TX_TIMER *) param_0, - (CHAR **) param_1, + (TX_NAME_CONST CHAR **) param_1, (UINT *) extra_parameters[0], (ULONG *) extra_parameters[1], (ULONG *) extra_parameters[2], diff --git a/common_modules/module_manager/inc/txm_module_manager_util.h b/common_modules/module_manager/inc/txm_module_manager_util.h index 6b9e5b76..3583edcc 100644 --- a/common_modules/module_manager/inc/txm_module_manager_util.h +++ b/common_modules/module_manager/inc/txm_module_manager_util.h @@ -186,7 +186,7 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size); 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); +UINT _txm_module_manager_object_name_compare(CHAR *object_name1, UINT object_name1_length, TX_NAME_CONST 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); diff --git a/common_modules/module_manager/src/txm_module_manager_thread_create.c b/common_modules/module_manager/src/txm_module_manager_thread_create.c index 276f3c16..51b85e1b 100644 --- a/common_modules/module_manager/src/txm_module_manager_thread_create.c +++ b/common_modules/module_manager/src/txm_module_manager_thread_create.c @@ -84,7 +84,7 @@ /* _txm_module_manager_kernel_dispatch Kernel dispatch function */ /* */ /**************************************************************************/ -UINT _txm_module_manager_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txm_module_manager_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*shell_function)(TX_THREAD *, TXM_MODULE_INSTANCE *), VOID (*entry_function)(ULONG id), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, @@ -768,4 +768,3 @@ ULONG i; /* Return success. */ return(TX_SUCCESS); } - diff --git a/common_modules/module_manager/src/txm_module_manager_util.c b/common_modules/module_manager/src/txm_module_manager_util.c index 93516ab2..f3c8beef 100644 --- a/common_modules/module_manager/src/txm_module_manager_util.c +++ b/common_modules/module_manager/src/txm_module_manager_util.c @@ -281,7 +281,7 @@ UINT return_value; /* 09-30-2020 Scott Larson Initial Version 6.1 */ /* */ /**************************************************************************/ -UINT _txm_module_manager_object_name_compare(CHAR *search_name, UINT search_name_length, CHAR *object_name) +UINT _txm_module_manager_object_name_compare(CHAR *search_name, UINT search_name_length, TX_NAME_CONST CHAR *object_name) { CHAR search_name_char; diff --git a/common_smp/inc/tx_api.h b/common_smp/inc/tx_api.h index 679bfe67..77bd6218 100644 --- a/common_smp/inc/tx_api.h +++ b/common_smp/inc/tx_api.h @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,6 +66,17 @@ extern "C" { #include "tx_port.h" +/* Define the qualifier applied to object name strings. Opting in makes every + object name a pointer to const, which the kernel and its tests are written + for. It is off by default because it changes the type of a public struct + field, and application code that copies a name into a writable pointer stops + compiling. */ +#ifdef TX_ENABLE_CONST_NAMES +#define TX_NAME_CONST const +#else +#define TX_NAME_CONST +#endif + /* If not defined by tx_port.h, default the port-specific memory synchronization macro to whitespace. */ @@ -392,7 +405,7 @@ typedef struct TX_TIMER_STRUCT ULONG tx_timer_id; /* Define the timer's name. */ - CHAR *tx_timer_name; + TX_NAME_CONST CHAR *tx_timer_name; /* Define the actual contents of the timer. This is the block that is used in the actual timer expiration processing. */ @@ -466,7 +479,7 @@ typedef struct TX_THREAD_STRUCT is typically defined to whitespace or a pointer type in tx_port.h. */ TX_THREAD_EXTENSION_0 - CHAR *tx_thread_name; /* Pointer to thread's name */ + TX_NAME_CONST CHAR *tx_thread_name; /* Pointer to thread's name */ UINT tx_thread_priority; /* Priority of thread (0-1023) */ UINT tx_thread_state; /* Thread's execution state */ UINT tx_thread_delayed_suspend; /* Delayed suspend flag */ @@ -632,7 +645,7 @@ typedef struct TX_BLOCK_POOL_STRUCT ULONG tx_block_pool_id; /* Define the block pool's name. */ - CHAR *tx_block_pool_name; + TX_NAME_CONST CHAR *tx_block_pool_name; /* Define the number of available memory blocks in the pool. */ UINT tx_block_pool_available; @@ -710,7 +723,7 @@ typedef struct TX_BYTE_POOL_STRUCT ULONG tx_byte_pool_id; /* Define the byte pool's name. */ - CHAR *tx_byte_pool_name; + TX_NAME_CONST CHAR *tx_byte_pool_name; /* Define the number of available bytes in the pool. */ ULONG tx_byte_pool_available; @@ -789,7 +802,7 @@ typedef struct TX_EVENT_FLAGS_GROUP_STRUCT ULONG tx_event_flags_group_id; /* Define the event flags group's name. */ - CHAR *tx_event_flags_group_name; + TX_NAME_CONST CHAR *tx_event_flags_group_name; /* Define the actual current event flags in this group. A zero in a particular bit indicates the event flag is not set. */ @@ -875,7 +888,7 @@ typedef struct TX_MUTEX_STRUCT ULONG tx_mutex_id; /* Define the mutex's name. */ - CHAR *tx_mutex_name; + TX_NAME_CONST CHAR *tx_mutex_name; /* Define the mutex ownership count. */ UINT tx_mutex_ownership_count; @@ -948,7 +961,7 @@ typedef struct TX_QUEUE_STRUCT ULONG tx_queue_id; /* Define the queue's name. */ - CHAR *tx_queue_name; + TX_NAME_CONST CHAR *tx_queue_name; /* Define the message size that was specified in queue creation. */ UINT tx_queue_message_size; @@ -1027,7 +1040,7 @@ typedef struct TX_SEMAPHORE_STRUCT ULONG tx_semaphore_id; /* Define the semaphore's name. */ - CHAR *tx_semaphore_name; + TX_NAME_CONST CHAR *tx_semaphore_name; /* Define the actual semaphore count. A zero means that no semaphore instance is available. */ @@ -1530,10 +1543,10 @@ VOID tx_application_define(VOID *first_unused_memory); /* Define block memory pool management function prototypes. */ UINT _tx_block_allocate(TX_BLOCK_POOL *pool_ptr, VOID **block_ptr, ULONG wait_option); -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size); UINT _tx_block_pool_delete(TX_BLOCK_POOL *pool_ptr); -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); UINT _tx_block_pool_performance_info_get(TX_BLOCK_POOL *pool_ptr, ULONG *allocates, ULONG *releases, @@ -1548,10 +1561,10 @@ UINT _tx_block_release(VOID *block_ptr); application. */ UINT _txe_block_allocate(TX_BLOCK_POOL *pool_ptr, VOID **block_ptr, ULONG wait_option); -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txe_block_pool_delete(TX_BLOCK_POOL *pool_ptr); -UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); UINT _txe_block_pool_prioritize(TX_BLOCK_POOL *pool_ptr); @@ -1562,10 +1575,10 @@ UINT _txe_block_release(VOID *block_ptr); UINT _tx_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); -UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size); UINT _tx_byte_pool_delete(TX_BYTE_POOL *pool_ptr); -UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool); UINT _tx_byte_pool_performance_info_get(TX_BYTE_POOL *pool_ptr, ULONG *allocates, ULONG *releases, @@ -1581,10 +1594,10 @@ UINT _tx_byte_release(VOID *memory_ptr); UINT _txe_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); UINT _txe_byte_pool_delete(TX_BYTE_POOL *pool_ptr); -UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool); UINT _txe_byte_pool_prioritize(TX_BYTE_POOL *pool_ptr); @@ -1593,11 +1606,11 @@ UINT _txe_byte_release(VOID *memory_ptr); /* Define event flags management function prototypes. */ -UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr); +UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr); UINT _tx_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); UINT _tx_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags, UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option); -UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group); UINT _tx_event_flags_performance_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG *sets, ULONG *gets, @@ -1612,11 +1625,11 @@ UINT _tx_event_flags_set_notify(TX_EVENT_FLAGS_GROUP *group_ptr, VOID (*e /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); UINT _txe_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); UINT _txe_event_flags_get(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG requested_flags, UINT get_option, ULONG *actual_flags_ptr, ULONG wait_option); -UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group); UINT _txe_event_flags_set(TX_EVENT_FLAGS_GROUP *group_ptr, ULONG flags_to_set, @@ -1631,10 +1644,10 @@ VOID _tx_initialize_kernel_enter(VOID); /* Define mutex management function prototypes. */ -UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit); +UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit); UINT _tx_mutex_delete(TX_MUTEX *mutex_ptr); UINT _tx_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option); -UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex); UINT _tx_mutex_performance_info_get(TX_MUTEX *mutex_ptr, ULONG *puts, ULONG *gets, @@ -1648,10 +1661,10 @@ UINT _tx_mutex_put(TX_MUTEX *mutex_ptr); /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); UINT _txe_mutex_delete(TX_MUTEX *mutex_ptr); UINT _txe_mutex_get(TX_MUTEX *mutex_ptr, ULONG wait_option); -UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex); UINT _txe_mutex_prioritize(TX_MUTEX *mutex_ptr); @@ -1660,11 +1673,11 @@ UINT _txe_mutex_put(TX_MUTEX *mutex_ptr); /* Define queue management function prototypes. */ -UINT _tx_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _tx_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size); UINT _tx_queue_delete(TX_QUEUE *queue_ptr); UINT _tx_queue_flush(TX_QUEUE *queue_ptr); -UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); UINT _tx_queue_performance_info_get(TX_QUEUE *queue_ptr, ULONG *messages_sent, ULONG *messages_received, ULONG *empty_suspensions, ULONG *full_suspensions, ULONG *full_errors, ULONG *timeouts); @@ -1680,11 +1693,11 @@ UINT _tx_queue_front_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG wa /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size); UINT _txe_queue_delete(TX_QUEUE *queue_ptr); UINT _txe_queue_flush(TX_QUEUE *queue_ptr); -UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue); UINT _txe_queue_prioritize(TX_QUEUE *queue_ptr); UINT _txe_queue_receive(TX_QUEUE *queue_ptr, VOID *destination_ptr, ULONG wait_option); @@ -1696,10 +1709,10 @@ UINT _txe_queue_front_send(TX_QUEUE *queue_ptr, VOID *source_ptr, ULONG w /* Define semaphore management function prototypes. */ UINT _tx_semaphore_ceiling_put(TX_SEMAPHORE *semaphore_ptr, ULONG ceiling); -UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count); +UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count); UINT _tx_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); UINT _tx_semaphore_get(TX_SEMAPHORE *semaphore_ptr, ULONG wait_option); -UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore); UINT _tx_semaphore_performance_info_get(TX_SEMAPHORE *semaphore_ptr, ULONG *puts, ULONG *gets, @@ -1714,10 +1727,10 @@ UINT _tx_semaphore_put_notify(TX_SEMAPHORE *semaphore_ptr, VOID (*semapho application. */ UINT _txe_semaphore_ceiling_put(TX_SEMAPHORE *semaphore_ptr, ULONG ceiling); -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); UINT _txe_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); UINT _txe_semaphore_get(TX_SEMAPHORE *semaphore_ptr, ULONG wait_option); -UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore); UINT _txe_semaphore_prioritize(TX_SEMAPHORE *semaphore_ptr); @@ -1729,7 +1742,7 @@ UINT _txe_semaphore_put_notify(TX_SEMAPHORE *semaphore_ptr, VOID (*semaph VOID _tx_thread_context_save(VOID); VOID _tx_thread_context_restore(VOID); -UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _tx_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, @@ -1737,7 +1750,7 @@ UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, UINT _tx_thread_delete(TX_THREAD *thread_ptr); UINT _tx_thread_entry_exit_notify(TX_THREAD *thread_ptr, VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type)); TX_THREAD *_tx_thread_identify(VOID); -UINT _tx_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _tx_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread); UINT _tx_thread_interrupt_control(UINT new_posture); @@ -1766,14 +1779,14 @@ UINT _tx_thread_wait_abort(TX_THREAD *thread_ptr); /* Define error checking shells for API services. These are only referenced by the application. */ -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size); UINT _txe_thread_delete(TX_THREAD *thread_ptr); UINT _txe_thread_entry_exit_notify(TX_THREAD *thread_ptr, VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type)); -UINT _txe_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _txe_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread); UINT _txe_thread_preemption_change(TX_THREAD *thread_ptr, UINT new_threshold, @@ -1793,12 +1806,12 @@ UINT _txe_thread_wait_abort(TX_THREAD *thread_ptr); UINT _tx_timer_activate(TX_TIMER *timer_ptr); UINT _tx_timer_change(TX_TIMER *timer_ptr, ULONG initial_ticks, ULONG reschedule_ticks); -UINT _tx_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _tx_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate); UINT _tx_timer_deactivate(TX_TIMER *timer_ptr); UINT _tx_timer_delete(TX_TIMER *timer_ptr); -UINT _tx_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _tx_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer); UINT _tx_timer_performance_info_get(TX_TIMER *timer_ptr, ULONG *activates, ULONG *reactivates, ULONG *deactivates, ULONG *expirations, ULONG *expiration_adjusts); @@ -1814,12 +1827,12 @@ VOID _tx_time_set(ULONG new_time); UINT _txe_timer_activate(TX_TIMER *timer_ptr); UINT _txe_timer_change(TX_TIMER *timer_ptr, ULONG initial_ticks, ULONG reschedule_ticks); -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); UINT _txe_timer_deactivate(TX_TIMER *timer_ptr); UINT _txe_timer_delete(TX_TIMER *timer_ptr); -UINT _txe_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _txe_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer); @@ -1933,7 +1946,8 @@ TX_THREAD *_tx_misra_ulong_to_thread_pointer_convert(ULONG value); VOID *_tx_misra_timer_indirect_to_void_pointer_convert(TX_TIMER_INTERNAL **pointer); CHAR *_tx_misra_const_char_to_char_pointer_convert(const char *pointer); TX_THREAD *_tx_misra_void_to_thread_pointer_convert(VOID *pointer); -UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer); +const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer); +const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *pointer, ULONG amount); VOID _tx_misra_event_flags_group_not_used(TX_EVENT_FLAGS_GROUP *group_ptr); VOID _tx_misra_event_flags_set_notify_not_used(VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *notify_group_ptr)); VOID _tx_misra_queue_not_used(TX_QUEUE *queue_ptr); @@ -1945,6 +1959,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #define TX_MEMSET(a,b,c) _tx_misra_memset((a), (UINT) (b), (UINT) (c)) #define TX_UCHAR_POINTER_ADD(a,b) _tx_misra_uchar_pointer_add((UCHAR *) (a), (ULONG) (b)) +#define TX_CONST_UCHAR_POINTER_ADD(a,b) _tx_misra_const_uchar_pointer_add((const UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_SUB(a,b) _tx_misra_uchar_pointer_sub((UCHAR *) (a), (ULONG) (b)) #define TX_UCHAR_POINTER_DIF(a,b) _tx_misra_uchar_pointer_dif((UCHAR *) (a), (UCHAR *) (b)) #define TX_ULONG_POINTER_ADD(a,b) _tx_misra_ulong_pointer_add((ULONG *) (a), (ULONG) (b)) @@ -2005,6 +2020,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #endif #define TX_UCHAR_POINTER_ADD(a,b) (((UCHAR *) (a)) + ((UINT) (b))) +#define TX_CONST_UCHAR_POINTER_ADD(a,b) (((const UCHAR *) (a)) + ((UINT) (b))) #define TX_UCHAR_POINTER_SUB(a,b) (((UCHAR *) (a)) - ((UINT) (b))) #define TX_UCHAR_POINTER_DIF(a,b) ((ULONG)(((UCHAR *) (a)) - ((UCHAR *) (b)))) #define TX_ULONG_POINTER_ADD(a,b) (((ULONG *) (a)) + ((UINT) (b))) @@ -2052,7 +2068,7 @@ VOID _tx_misra_thread_entry_exit_notify_not_used(VOID (*threa #endif #define TX_CONST_CHAR_TO_CHAR_POINTER_CONVERT(a) ((CHAR *) ((VOID *) (a))) #define TX_VOID_TO_THREAD_POINTER_CONVERT(a) ((TX_THREAD *) ((VOID *) (a))) -#define TX_CHAR_TO_UCHAR_POINTER_CONVERT(a) ((UCHAR *) ((VOID *) (a))) +#define TX_CHAR_TO_UCHAR_POINTER_CONVERT(a) ((const UCHAR *) ((const VOID *) (a))) #ifndef TX_EVENT_FLAGS_GROUP_NOT_USED #define TX_EVENT_FLAGS_GROUP_NOT_USED(a) ((void)(a)) #endif @@ -2343,4 +2359,3 @@ void __ghs_rnerr(char *errMsg, int stackLevels, int stackTraceDisplay, void *hex #endif #endif - diff --git a/common_smp/inc/tx_trace.h b/common_smp/inc/tx_trace.h index ea0e59e5..2f4447d4 100644 --- a/common_smp/inc/tx_trace.h +++ b/common_smp/inc/tx_trace.h @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -452,7 +454,7 @@ TRACE_DECLARE ULONG _tx_trace_registry_search_start #define TX_TRACE_INITIALIZE _tx_trace_initialize(); -#define TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) _tx_trace_object_register((UCHAR) (t), (VOID *) (p), (CHAR *) (n), (ULONG) (a), (ULONG) (b)); +#define TX_TRACE_OBJECT_REGISTER(t,p,n,a,b) _tx_trace_object_register((UCHAR) (t), (VOID *) (p), (n), (ULONG) (a), (ULONG) (b)); #define TX_TRACE_OBJECT_UNREGISTER(o) _tx_trace_object_unregister((VOID *) (o)); #ifndef TX_TRACE_IN_LINE_INSERT #define TX_TRACE_IN_LINE_INSERT(i,a,b,c,d,e) \ @@ -515,7 +517,7 @@ TRACE_DECLARE ULONG _tx_trace_registry_search_start /* Define internal function prototypes of the trace component, only if compiling ThreadX source code. */ VOID _tx_trace_initialize(VOID); -VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2); +VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, TX_NAME_CONST CHAR *object_name, ULONG parameter_1, ULONG parameter_2); VOID _tx_trace_object_unregister(VOID *object_ptr); diff --git a/common_smp/inc/tx_user_sample.h b/common_smp/inc/tx_user_sample.h index 64ff9aed..1514a0db 100644 --- a/common_smp/inc/tx_user_sample.h +++ b/common_smp/inc/tx_user_sample.h @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -100,6 +102,12 @@ #define TX_TIMER_TICKS_PER_SECOND (100UL) */ +/* Define this option to qualify object names as pointers to const. */ + +/* +#define TX_ENABLE_CONST_NAMES +*/ + /* Determine if there is a FileX pointer in the thread control block. By default, the pointer is there for legacy/backwards compatibility. The pointer must also be there for applications using FileX. @@ -288,4 +296,3 @@ */ #endif - diff --git a/common_smp/src/tx_block_pool_create.c b/common_smp/src/tx_block_pool_create.c index 1d2c803c..8781dc78 100644 --- a/common_smp/src/tx_block_pool_create.c +++ b/common_smp/src/tx_block_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size) { diff --git a/common_smp/src/tx_block_pool_info_get.c b/common_smp/src/tx_block_pool_info_get.c index 5998f1db..5e1e89fd 100644 --- a/common_smp/src/tx_block_pool_info_get.c +++ b/common_smp/src/tx_block_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) { diff --git a/common_smp/src/tx_byte_pool_create.c b/common_smp/src/tx_byte_pool_create.c index 21abbe35..f5c8460d 100644 --- a/common_smp/src/tx_byte_pool_create.c +++ b/common_smp/src/tx_byte_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, ULONG pool_size) +UINT _tx_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/tx_byte_pool_info_get.c b/common_smp/src/tx_byte_pool_info_get.c index bd096440..e9e9efa4 100644 --- a/common_smp/src/tx_byte_pool_info_get.c +++ b/common_smp/src/tx_byte_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _tx_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) { diff --git a/common_smp/src/tx_event_flags_create.c b/common_smp/src/tx_event_flags_create.c index 2a9c042d..361fafa4 100644 --- a/common_smp/src/tx_event_flags_create.c +++ b/common_smp/src/tx_event_flags_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr) +UINT _tx_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/tx_event_flags_info_get.c b/common_smp/src/tx_event_flags_info_get.c index 21e85c9a..51ec345f 100644 --- a/common_smp/src/tx_event_flags_info_get.c +++ b/common_smp/src/tx_event_flags_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _tx_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) { diff --git a/common_smp/src/tx_misra.c b/common_smp/src/tx_misra.c index f37cebaa..b9144a70 100644 --- a/common_smp/src/tx_misra.c +++ b/common_smp/src/tx_misra.c @@ -819,15 +819,29 @@ UCHAR *_tx_misra_entry_to_uchar_pointer_convert(TX_TRACE_BUFFER_ENTRY *pointer) /***********************************************************************************************/ /***********************************************************************************************/ /** */ -/** UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer); */ +/** const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer); */ /** */ /***********************************************************************************************/ /***********************************************************************************************/ -UCHAR *_tx_misra_char_to_uchar_pointer_convert(CHAR *pointer) +const UCHAR *_tx_misra_char_to_uchar_pointer_convert(TX_NAME_CONST CHAR *pointer) { /* Return a UCHAR pointer. */ - return((UCHAR *) ((VOID *) pointer)); + return((const UCHAR *) ((const VOID *) pointer)); +} + + +/***********************************************************************************************/ +/***********************************************************************************************/ +/** */ +/** const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *ptr, ULONG amount); */ +/** */ +/***********************************************************************************************/ +/***********************************************************************************************/ +const UCHAR *_tx_misra_const_uchar_pointer_add(const UCHAR *ptr, ULONG amount) +{ + ptr = ptr + amount; + return(ptr); } diff --git a/common_smp/src/tx_mutex_create.c b/common_smp/src/tx_mutex_create.c index 436c01f5..a1f5eba8 100644 --- a/common_smp/src/tx_mutex_create.c +++ b/common_smp/src/tx_mutex_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -65,7 +67,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit) +UINT _tx_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/tx_mutex_info_get.c b/common_smp/src/tx_mutex_info_get.c index a24d1e30..3be2606b 100644 --- a/common_smp/src/tx_mutex_info_get.c +++ b/common_smp/src/tx_mutex_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _tx_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) { diff --git a/common_smp/src/tx_queue_create.c b/common_smp/src/tx_queue_create.c index 59ae154e..afb5648d 100644 --- a/common_smp/src/tx_queue_create.c +++ b/common_smp/src/tx_queue_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _tx_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size) { diff --git a/common_smp/src/tx_queue_info_get.c b/common_smp/src/tx_queue_info_get.c index d0ecb2b6..e25da54e 100644 --- a/common_smp/src/tx_queue_info_get.c +++ b/common_smp/src/tx_queue_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _tx_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) { diff --git a/common_smp/src/tx_semaphore_create.c b/common_smp/src/tx_semaphore_create.c index 849f5d3b..14553ca8 100644 --- a/common_smp/src/tx_semaphore_create.c +++ b/common_smp/src/tx_semaphore_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -64,7 +66,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count) +UINT _tx_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/tx_semaphore_info_get.c b/common_smp/src/tx_semaphore_info_get.c index 89fd9423..2ffad1f7 100644 --- a/common_smp/src/tx_semaphore_info_get.c +++ b/common_smp/src/tx_semaphore_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _tx_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) { diff --git a/common_smp/src/tx_thread_create.c b/common_smp/src/tx_thread_create.c index 5be0d05b..3b158f47 100644 --- a/common_smp/src/tx_thread_create.c +++ b/common_smp/src/tx_thread_create.c @@ -79,7 +79,7 @@ /* _tx_timer_initialize Create system timer thread */ /* */ /**************************************************************************/ -UINT _tx_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _tx_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG id), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start) diff --git a/common_smp/src/tx_thread_info_get.c b/common_smp/src/tx_thread_info_get.c index 740a3b95..cd0df6ec 100644 --- a/common_smp/src/tx_thread_info_get.c +++ b/common_smp/src/tx_thread_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _tx_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) { diff --git a/common_smp/src/tx_timer_create.c b/common_smp/src/tx_timer_create.c index 73fa67cd..81af4c9b 100644 --- a/common_smp/src/tx_timer_create.c +++ b/common_smp/src/tx_timer_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -68,7 +70,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _tx_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG id), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate) { diff --git a/common_smp/src/tx_timer_info_get.c b/common_smp/src/tx_timer_info_get.c index 31c801f9..0811b592 100644 --- a/common_smp/src/tx_timer_info_get.c +++ b/common_smp/src/tx_timer_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -68,7 +70,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _tx_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _tx_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) { diff --git a/common_smp/src/tx_trace_object_register.c b/common_smp/src/tx_trace_object_register.c index f7cd4a4a..a2a1e0b4 100644 --- a/common_smp/src/tx_trace_object_register.c +++ b/common_smp/src/tx_trace_object_register.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -66,7 +68,7 @@ /* Application Code */ /* */ /**************************************************************************/ -VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, CHAR *object_name, ULONG parameter_1, ULONG parameter_2) +VOID _tx_trace_object_register(UCHAR object_type, VOID *object_ptr, TX_NAME_CONST CHAR *object_name, ULONG parameter_1, ULONG parameter_2) { #ifdef TX_ENABLE_EVENT_TRACE @@ -75,6 +77,7 @@ UINT i, entries; UINT found, loop_break; TX_THREAD *thread_ptr; UCHAR *work_ptr; +const UCHAR *name_ptr; TX_TRACE_OBJECT_ENTRY *entry_ptr; @@ -211,21 +214,21 @@ TX_TRACE_OBJECT_ENTRY *entry_ptr; for (i = ((ULONG) 0); i < (((ULONG) TX_TRACE_OBJECT_REGISTRY_NAME)-((ULONG) 1)); i++) { - /* Setup work pointer to the object name character. */ - work_ptr = TX_CHAR_TO_UCHAR_POINTER_CONVERT(object_name); - work_ptr = TX_UCHAR_POINTER_ADD(work_ptr, i); + /* Setup name pointer to the object name character. */ + name_ptr = TX_CHAR_TO_UCHAR_POINTER_CONVERT(object_name); + name_ptr = TX_CONST_UCHAR_POINTER_ADD(name_ptr, i); - /* Determine if object_name (work_ptr) is null. */ - if (work_ptr == TX_NULL) + /* Determine if object_name (name_ptr) is null. */ + if (name_ptr == TX_NULL) { break; } /* Copy a character of the name. */ - entry_ptr -> tx_trace_object_entry_name[i] = (UCHAR) *work_ptr; + entry_ptr -> tx_trace_object_entry_name[i] = (UCHAR) *name_ptr; /* Determine if we are at the end. */ - if (*work_ptr == ((UCHAR) 0)) + if (*name_ptr == ((UCHAR) 0)) { break; } diff --git a/common_smp/src/txe_block_pool_create.c b/common_smp/src/txe_block_pool_create.c index 08ef7e69..b4c7e13f 100644 --- a/common_smp/src/txe_block_pool_create.c +++ b/common_smp/src/txe_block_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { diff --git a/common_smp/src/txe_block_pool_info_get.c b/common_smp/src/txe_block_pool_info_get.c index f91ca206..4c6003d7 100644 --- a/common_smp/src/txe_block_pool_info_get.c +++ b/common_smp/src/txe_block_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _txe_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool) { diff --git a/common_smp/src/txe_byte_pool_create.c b/common_smp/src/txe_byte_pool_create.c index 99a89698..9ae72ee9 100644 --- a/common_smp/src/txe_byte_pool_create.c +++ b/common_smp/src/txe_byte_pool_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -73,7 +75,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/txe_byte_pool_info_get.c b/common_smp/src/txe_byte_pool_info_get.c index 85e7a233..a83c907b 100644 --- a/common_smp/src/txe_byte_pool_info_get.c +++ b/common_smp/src/txe_byte_pool_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, CHAR **name, ULONG *available_bytes, +UINT _txe_byte_pool_info_get(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_bytes, ULONG *fragments, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BYTE_POOL **next_pool) { diff --git a/common_smp/src/txe_event_flags_create.c b/common_smp/src/txe_event_flags_create.c index 4e3fed77..20984738 100644 --- a/common_smp/src/txe_event_flags_create.c +++ b/common_smp/src/txe_event_flags_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size) +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/txe_event_flags_info_get.c b/common_smp/src/txe_event_flags_info_get.c index e551d025..d7bddca4 100644 --- a/common_smp/src/txe_event_flags_info_get.c +++ b/common_smp/src/txe_event_flags_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR **name, ULONG *current_flags, +UINT _txe_event_flags_info_get(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR **name, ULONG *current_flags, TX_THREAD **first_suspended, ULONG *suspended_count, TX_EVENT_FLAGS_GROUP **next_group) { diff --git a/common_smp/src/txe_mutex_create.c b/common_smp/src/txe_mutex_create.c index 392f8b0e..a0461294 100644 --- a/common_smp/src/txe_mutex_create.c +++ b/common_smp/src/txe_mutex_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/txe_mutex_info_get.c b/common_smp/src/txe_mutex_info_get.c index f4ef4168..93b43f91 100644 --- a/common_smp/src/txe_mutex_info_get.c +++ b/common_smp/src/txe_mutex_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -71,7 +73,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, CHAR **name, ULONG *count, TX_THREAD **owner, +UINT _txe_mutex_info_get(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR **name, ULONG *count, TX_THREAD **owner, TX_THREAD **first_suspended, ULONG *suspended_count, TX_MUTEX **next_mutex) { diff --git a/common_smp/src/txe_queue_create.c b/common_smp/src/txe_queue_create.c index 387eacb6..ca3b8531 100644 --- a/common_smp/src/txe_queue_create.c +++ b/common_smp/src/txe_queue_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -72,7 +74,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size) { diff --git a/common_smp/src/txe_queue_info_get.c b/common_smp/src/txe_queue_info_get.c index 78d98392..90fdd410 100644 --- a/common_smp/src/txe_queue_info_get.c +++ b/common_smp/src/txe_queue_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, CHAR **name, ULONG *enqueued, ULONG *available_storage, +UINT _txe_queue_info_get(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR **name, ULONG *enqueued, ULONG *available_storage, TX_THREAD **first_suspended, ULONG *suspended_count, TX_QUEUE **next_queue) { diff --git a/common_smp/src/txe_semaphore_create.c b/common_smp/src/txe_semaphore_create.c index a190b03c..d538f5fe 100644 --- a/common_smp/src/txe_semaphore_create.c +++ b/common_smp/src/txe_semaphore_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) { TX_INTERRUPT_SAVE_AREA diff --git a/common_smp/src/txe_semaphore_info_get.c b/common_smp/src/txe_semaphore_info_get.c index 7695028e..85747dc3 100644 --- a/common_smp/src/txe_semaphore_info_get.c +++ b/common_smp/src/txe_semaphore_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -70,7 +72,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, CHAR **name, ULONG *current_value, +UINT _txe_semaphore_info_get(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR **name, ULONG *current_value, TX_THREAD **first_suspended, ULONG *suspended_count, TX_SEMAPHORE **next_semaphore) { diff --git a/common_smp/src/txe_thread_create.c b/common_smp/src/txe_thread_create.c index d319bc9e..cc5033b2 100644 --- a/common_smp/src/txe_thread_create.c +++ b/common_smp/src/txe_thread_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -79,7 +81,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG id), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, diff --git a/common_smp/src/txe_thread_info_get.c b/common_smp/src/txe_thread_info_get.c index ad1db3f7..19e248eb 100644 --- a/common_smp/src/txe_thread_info_get.c +++ b/common_smp/src/txe_thread_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_thread_info_get(TX_THREAD *thread_ptr, CHAR **name, UINT *state, ULONG *run_count, +UINT _txe_thread_info_get(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR **name, UINT *state, ULONG *run_count, UINT *priority, UINT *preemption_threshold, ULONG *time_slice, TX_THREAD **next_thread, TX_THREAD **next_suspended_thread) { diff --git a/common_smp/src/txe_timer_create.c b/common_smp/src/txe_timer_create.c index 02cf7c1a..8c481bde 100644 --- a/common_smp/src/txe_timer_create.c +++ b/common_smp/src/txe_timer_create.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -74,7 +76,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG id), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size) { diff --git a/common_smp/src/txe_timer_info_get.c b/common_smp/src/txe_timer_info_get.c index 16ac5f64..be2e9a13 100644 --- a/common_smp/src/txe_timer_info_get.c +++ b/common_smp/src/txe_timer_info_get.c @@ -9,6 +9,8 @@ * SPDX-License-Identifier: MIT **************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /**************************************************************************/ /**************************************************************************/ @@ -69,7 +71,7 @@ /* Application Code */ /* */ /**************************************************************************/ -UINT _txe_timer_info_get(TX_TIMER *timer_ptr, CHAR **name, UINT *active, ULONG *remaining_ticks, +UINT _txe_timer_info_get(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR **name, UINT *active, ULONG *remaining_ticks, ULONG *reschedule_ticks, TX_TIMER **next_timer) { diff --git a/test/freertos/regression/txfr_test_harness.c b/test/freertos/regression/txfr_test_harness.c index 9f9ec887..b5bd45de 100644 --- a/test/freertos/regression/txfr_test_harness.c +++ b/test/freertos/regression/txfr_test_harness.c @@ -37,17 +37,17 @@ static int txfr_failures; /* The real entry points, supplied by the linker in response to --wrap. */ UINT __real__txe_byte_allocate(TX_BYTE_POOL *pool_ptr, VOID **memory_ptr, ULONG memory_size, ULONG wait_option); UINT __real__txe_byte_release(VOID *memory_ptr); -UINT __real__txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT __real__txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); UINT __real__txe_semaphore_delete(TX_SEMAPHORE *semaphore_ptr); -UINT __real__txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT __real__txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); UINT __real__txe_mutex_delete(TX_MUTEX *mutex_ptr); -UINT __real__txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT __real__txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); UINT __real__txe_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr); -UINT __real__txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, VOID (*expiration_function)(ULONG input), +UINT __real__txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); UINT __real__txe_timer_delete(TX_TIMER *timer_ptr); -UINT __real__txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), +UINT __real__txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size); @@ -93,7 +93,7 @@ UINT __wrap__txe_byte_release(VOID *memory_ptr) } -UINT __wrap__txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) +UINT __wrap__txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size) { if(txfr_should_fail(TXFR_INJECT_SEMAPHORE_CREATE) != 0) { @@ -121,7 +121,7 @@ UINT __wrap__txe_semaphore_delete(TX_SEMAPHORE *semaphore_ptr) } -UINT __wrap__txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) +UINT __wrap__txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size) { if(txfr_should_fail(TXFR_INJECT_MUTEX_CREATE) != 0) { @@ -149,7 +149,7 @@ UINT __wrap__txe_mutex_delete(TX_MUTEX *mutex_ptr) } -UINT __wrap__txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size) +UINT __wrap__txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size) { if(txfr_should_fail(TXFR_INJECT_EVENT_FLAGS_CREATE) != 0) { @@ -177,7 +177,7 @@ UINT __wrap__txe_event_flags_delete(TX_EVENT_FLAGS_GROUP *group_ptr) } -UINT __wrap__txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, VOID (*expiration_function)(ULONG input), +UINT __wrap__txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG input), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size) { @@ -208,7 +208,7 @@ UINT __wrap__txe_timer_delete(TX_TIMER *timer_ptr) } -UINT __wrap__txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), +UINT __wrap__txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG entry_input), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, ULONG time_slice, UINT auto_start, UINT thread_control_block_size) diff --git a/test/smp/regression/threadx_block_memory_basic_test.c b/test/smp/regression/threadx_block_memory_basic_test.c index 28edee3f..27990f88 100644 --- a/test/smp/regression/threadx_block_memory_basic_test.c +++ b/test/smp/regression/threadx_block_memory_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 simple memory block pool creation, deletion, and allocates and releases. */ @@ -72,7 +74,7 @@ void test_control_return(UINT status); /* Prototype direct call to block pool core service. */ -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size); diff --git a/test/smp/regression/threadx_block_memory_error_detection_test.c b/test/smp/regression/threadx_block_memory_error_detection_test.c index 41148120..b0303b76 100644 --- a/test/smp/regression/threadx_block_memory_error_detection_test.c +++ b/test/smp/regression/threadx_block_memory_error_detection_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 error detection for simple memory block operations. */ #include @@ -29,7 +31,7 @@ static CHAR *pointer; static void thread_0_entry(ULONG thread_input); -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); diff --git a/test/smp/regression/threadx_block_memory_information_test.c b/test/smp/regression/threadx_block_memory_information_test.c index 82d57f40..0c04cb7e 100644 --- a/test/smp/regression/threadx_block_memory_information_test.c +++ b/test/smp/regression/threadx_block_memory_information_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 block memory information services. */ #include @@ -68,7 +70,7 @@ static void thread_5_entry(ULONG thread_input); static void thread_6_entry(ULONG thread_input); /* Direct core function to bypass the error checking shell. */ -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); @@ -227,7 +229,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; VOID *pointer; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG total_blocks; TX_THREAD *first_suspended; @@ -369,7 +371,7 @@ ULONG timeouts; status += tx_block_pool_info_get(&block_pool_0, &name, &available, &total_blocks, &first_suspended, &suspended_count, &next_pool); /* Check for an error condition. */ - if ((status) || (available != block_pool_0.tx_block_pool_available) || (total_blocks != block_pool_0.tx_block_pool_total) || + if ((status) || (name != block_pool_0.tx_block_pool_name) || (available != block_pool_0.tx_block_pool_available) || (total_blocks != block_pool_0.tx_block_pool_total) || (first_suspended != &thread_4) || (suspended_count != block_pool_0.tx_block_pool_suspended_count) || (next_pool != &block_pool_0)) { diff --git a/test/smp/regression/threadx_byte_memory_basic_test.c b/test/smp/regression/threadx_byte_memory_basic_test.c index 45a2518d..d7c1232e 100644 --- a/test/smp/regression/threadx_byte_memory_basic_test.c +++ b/test/smp/regression/threadx_byte_memory_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 simple memory byte pool creation, deletion, and allocates and releases. */ @@ -42,7 +44,7 @@ extern UINT test_byte_pool_create_init; extern VOID (*test_isr_dispatch)(void); -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); diff --git a/test/smp/regression/threadx_byte_memory_information_test.c b/test/smp/regression/threadx_byte_memory_information_test.c index f1624a65..f65efac3 100644 --- a/test/smp/regression/threadx_byte_memory_information_test.c +++ b/test/smp/regression/threadx_byte_memory_information_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 byte memory information. */ #include @@ -226,7 +228,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; VOID *pointer; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG fragments; TX_THREAD *first_suspended; @@ -369,7 +371,7 @@ ULONG timeouts; status += tx_byte_pool_info_get(&byte_pool_0, &name, &available, &fragments, &first_suspended, &suspended_count, &next_pool); /* Check the status. */ - if ((status != TX_SUCCESS) || (available != byte_pool_0.tx_byte_pool_available) || (fragments != byte_pool_0.tx_byte_pool_fragments) || + if ((status != TX_SUCCESS) || (name != byte_pool_0.tx_byte_pool_name) || (available != byte_pool_0.tx_byte_pool_available) || (fragments != byte_pool_0.tx_byte_pool_fragments) || (first_suspended != &thread_4) || (suspended_count != byte_pool_0.tx_byte_pool_suspended_count) || (next_pool != &byte_pool_0)) { diff --git a/test/smp/regression/threadx_byte_memory_long_search_test.c b/test/smp/regression/threadx_byte_memory_long_search_test.c index 86a99be0..8f076335 100644 --- a/test/smp/regression/threadx_byte_memory_long_search_test.c +++ b/test/smp/regression/threadx_byte_memory_long_search_test.c @@ -133,7 +133,7 @@ void threadx_byte_memory_long_search_application_define(void *first_unused_me UINT status; CHAR *pointer; UINT i; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG fragments; void *probe_ptr; @@ -259,7 +259,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; UINT i; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG fragments; diff --git a/test/smp/regression/threadx_event_flag_basic_test.c b/test/smp/regression/threadx_event_flag_basic_test.c index 8ab990f7..fed424a6 100644 --- a/test/smp/regression/threadx_event_flag_basic_test.c +++ b/test/smp/regression/threadx_event_flag_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 simple event flag group creation, deletion, gets and sets. */ @@ -57,7 +59,7 @@ static TX_EVENT_FLAGS_GROUP group_3; static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); /* Prototype for test control return. */ diff --git a/test/smp/regression/threadx_event_flag_information_test.c b/test/smp/regression/threadx_event_flag_information_test.c index 45e547f9..1c7cfd2d 100644 --- a/test/smp/regression/threadx_event_flag_information_test.c +++ b/test/smp/regression/threadx_event_flag_information_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 the event flag group information gathering services. */ #include @@ -134,7 +136,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; ULONG actual_events; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG current_flags; TX_THREAD *first_suspended; ULONG suspended_count; @@ -356,7 +358,7 @@ ULONG timeouts; status += tx_event_flags_info_get(&group_0, &name, ¤t_flags, &first_suspended, &suspended_count, &next_group); /* Check the status. */ - if ((status != TX_SUCCESS) || (current_flags != group_0.tx_event_flags_group_current) || (first_suspended != TX_NULL) || (suspended_count != 0) || (next_group != &group_1)) + if ((status != TX_SUCCESS) || (name != group_0.tx_event_flags_group_name) || (current_flags != group_0.tx_event_flags_group_current) || (first_suspended != TX_NULL) || (suspended_count != 0) || (next_group != &group_1)) { /* Event flag error. */ diff --git a/test/smp/regression/threadx_mutex_basic_test.c b/test/smp/regression/threadx_mutex_basic_test.c index bb81eb9a..5a652843 100644 --- a/test/smp/regression/threadx_mutex_basic_test.c +++ b/test/smp/regression/threadx_mutex_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 the mutex create/delete and immediate return gets and puts. */ @@ -69,7 +71,7 @@ static void thread_2_entry(ULONG thread_input); static void thread_3_entry(ULONG thread_input); static void thread_4_entry(ULONG thread_input); -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); /* Prototype for test control return. */ diff --git a/test/smp/regression/threadx_mutex_information_test.c b/test/smp/regression/threadx_mutex_information_test.c index 3829122c..fea78c04 100644 --- a/test/smp/regression/threadx_mutex_information_test.c +++ b/test/smp/regression/threadx_mutex_information_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 the mutex information services. */ #include @@ -134,7 +136,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG count; TX_THREAD *owner; TX_THREAD *first_suspended; @@ -300,7 +302,7 @@ ULONG inheritances; status += tx_mutex_info_get(&mutex_2, &name, &count, &owner, &first_suspended, &suspended_count, &next_mutex); /* Check status. */ - if ((status != TX_SUCCESS) || (count != mutex_2.tx_mutex_ownership_count) || (owner != mutex_2.tx_mutex_owner) || + if ((status != TX_SUCCESS) || (name != mutex_2.tx_mutex_name) || (count != mutex_2.tx_mutex_ownership_count) || (owner != mutex_2.tx_mutex_owner) || (first_suspended != mutex_2.tx_mutex_suspension_list) || (suspended_count != mutex_2.tx_mutex_suspended_count) || (next_mutex != mutex_2.tx_mutex_created_next)) { diff --git a/test/smp/regression/threadx_queue_basic_one_word_test.c b/test/smp/regression/threadx_queue_basic_one_word_test.c index 1abb6986..58142471 100644 --- a/test/smp/regression/threadx_queue_basic_one_word_test.c +++ b/test/smp/regression/threadx_queue_basic_one_word_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 immediate response queue services including create and delete. This test is for queue sizes of 1 ULONG. Two queues are used one with a capacity of 1 message and another with a capacity of 3 messages. */ @@ -51,7 +53,7 @@ static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size); diff --git a/test/smp/regression/threadx_queue_information_test.c b/test/smp/regression/threadx_queue_information_test.c index f884bd0d..8929c465 100644 --- a/test/smp/regression/threadx_queue_information_test.c +++ b/test/smp/regression/threadx_queue_information_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 the queue information services. */ #include @@ -102,7 +104,7 @@ UINT status; ULONG source_message = 0x12345678UL; ULONG dest_message; ULONG expected_message; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG enqueued; ULONG available_storage; TX_THREAD *first_suspended; @@ -409,7 +411,7 @@ ULONG timeouts; status += tx_queue_info_get(&queue_0, &name, &enqueued, &available_storage, &first_suspended, &suspended_count, &next_queue); /* Check for errors. */ - if ((status != TX_SUCCESS) || (enqueued != queue_0.tx_queue_enqueued) || (available_storage != queue_0.tx_queue_available_storage) || + if ((status != TX_SUCCESS) || (name != queue_0.tx_queue_name) || (enqueued != queue_0.tx_queue_enqueued) || (available_storage != queue_0.tx_queue_available_storage) || (first_suspended != queue_0.tx_queue_suspension_list) || (suspended_count != queue_0.tx_queue_suspended_count) || (next_queue != queue_0.tx_queue_created_next)) { diff --git a/test/smp/regression/threadx_semaphore_basic_test.c b/test/smp/regression/threadx_semaphore_basic_test.c index 3209b586..a1a3d340 100644 --- a/test/smp/regression/threadx_semaphore_basic_test.c +++ b/test/smp/regression/threadx_semaphore_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 the semaphore create/delete and immediate return gets and puts. */ #include @@ -62,7 +64,7 @@ static TX_SEMAPHORE semaphore_3; static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); /* Prototype for test control return. */ diff --git a/test/smp/regression/threadx_semaphore_information_test.c b/test/smp/regression/threadx_semaphore_information_test.c index ede276e9..c0bb3c72 100644 --- a/test/smp/regression/threadx_semaphore_information_test.c +++ b/test/smp/regression/threadx_semaphore_information_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 the semaphore information services. */ #include @@ -100,7 +102,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG current_value; TX_THREAD *first_suspended; ULONG suspended_count; @@ -211,7 +213,7 @@ ULONG timeouts; status += tx_semaphore_info_get(&semaphore_0, &name, ¤t_value, &first_suspended, &suspended_count, &next_semaphore); /* Check status. */ - if ((status != TX_SUCCESS) || (current_value != semaphore_0.tx_semaphore_count) || + if ((status != TX_SUCCESS) || (name != semaphore_0.tx_semaphore_name) || (current_value != semaphore_0.tx_semaphore_count) || (first_suspended != semaphore_0.tx_semaphore_suspension_list) || (suspended_count != semaphore_0.tx_semaphore_suspended_count) || (next_semaphore != semaphore_0.tx_semaphore_created_next)) { diff --git a/test/smp/regression/threadx_thread_basic_execution_test.c b/test/smp/regression/threadx_thread_basic_execution_test.c index d90d0769..b0acc842 100644 --- a/test/smp/regression/threadx_thread_basic_execution_test.c +++ b/test/smp/regression/threadx_thread_basic_execution_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /* This test is designed to see if one thread can be created and executed. It thread_0_entry is hit, then the thread was successfully scheduled. On success, thread_0_counter gets incremented. */ @@ -69,7 +71,7 @@ static unsigned long isr_executed = 0; static void thread_0_entry(ULONG task_input); -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, diff --git a/test/smp/regression/threadx_thread_information_test.c b/test/smp/regression/threadx_thread_information_test.c index b5d06e71..fef3473f 100644 --- a/test/smp/regression/threadx_thread_information_test.c +++ b/test/smp/regression/threadx_thread_information_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /* This test is for the thread information services. */ #include @@ -63,7 +65,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; UINT state; ULONG run_count; UINT priority; @@ -96,7 +98,7 @@ ULONG idle_returns; status += tx_thread_info_get(&thread_0, &name, &state, &run_count, &priority, &preemption_threshold, &time_slice, &next_thread, &suspended_thread); /* Check for error status. */ - if ((status != TX_SUCCESS) || (state != TX_READY) || (run_count != thread_0.tx_thread_run_count) || (priority != 16) || (preemption_threshold != 16) || + if ((status != TX_SUCCESS) || (name != thread_0.tx_thread_name) || (state != TX_READY) || (run_count != thread_0.tx_thread_run_count) || (priority != 16) || (preemption_threshold != 16) || (time_slice != 0) || (next_thread != thread_0.tx_thread_created_next) || (suspended_thread != thread_0.tx_thread_suspended_next)) { diff --git a/test/smp/regression/threadx_timer_information_test.c b/test/smp/regression/threadx_timer_information_test.c index ae3bb414..cbb88239 100644 --- a/test/smp/regression/threadx_timer_information_test.c +++ b/test/smp/regression/threadx_timer_information_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 timer information services. */ #include @@ -104,7 +106,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; UINT interrupt_status; -CHAR *name; +TX_NAME_CONST CHAR *name; UINT active; ULONG remaining_ticks; ULONG reschedule_ticks; @@ -231,7 +233,7 @@ TX_TIMER_INTERNAL **list_head; status += tx_timer_info_get(&timer_0, &name, &active, &remaining_ticks, &reschedule_ticks, &next_timer); /* Check for successful completion. */ - if ((status != TX_SUCCESS) || (active != TX_TRUE) || (remaining_ticks != 100) || (reschedule_ticks != 200) || (next_timer != &timer_1)) + if ((status != TX_SUCCESS) || (name != timer_0.tx_timer_name) || (active != TX_TRUE) || (remaining_ticks != 100) || (reschedule_ticks != 200) || (next_timer != &timer_1)) { /* Application timer error. */ diff --git a/test/smp/regression/threadx_timer_simple_test.c b/test/smp/regression/threadx_timer_simple_test.c index e2272bd2..5abd1d3c 100644 --- a/test/smp/regression/threadx_timer_simple_test.c +++ b/test/smp/regression/threadx_timer_simple_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 a simple application timer services, including create, activate, deactivate, change, and delete. */ @@ -63,7 +65,7 @@ static void thread_1_entry(ULONG thread_input); static void timer_0_expiration(ULONG timer_input); static void timer_1_expiration(ULONG timer_input); -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); diff --git a/test/smp/regression/threadx_trace_basic_test.c b/test/smp/regression/threadx_trace_basic_test.c index 51fa6256..10b927bb 100644 --- a/test/smp/regression/threadx_trace_basic_test.c +++ b/test/smp/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. */ #include @@ -30,7 +32,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; diff --git a/test/tx/module_manager/threadx_module_manager_block_pool_parameters_test.c b/test/tx/module_manager/threadx_module_manager_block_pool_parameters_test.c index fb3f6ff9..4fbd3e50 100644 --- a/test/tx/module_manager/threadx_module_manager_block_pool_parameters_test.c +++ b/test/tx/module_manager/threadx_module_manager_block_pool_parameters_test.c @@ -414,7 +414,7 @@ static UINT test_service_record(ALIGN_TYPE object_ptr, ALIGN_TYPE name_ptr, ULO } -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { @@ -446,7 +446,7 @@ UINT status; } -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size) { @@ -478,7 +478,7 @@ UINT status; } -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size) { diff --git a/test/tx/regression/threadx_block_memory_basic_test.c b/test/tx/regression/threadx_block_memory_basic_test.c index 94cc8793..d7c609d2 100644 --- a/test/tx/regression/threadx_block_memory_basic_test.c +++ b/test/tx/regression/threadx_block_memory_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 simple memory block pool creation, deletion, and allocates and releases. */ @@ -72,7 +74,7 @@ void test_control_return(UINT status); /* Prototype direct call to block pool core service. */ -UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _tx_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size); diff --git a/test/tx/regression/threadx_block_memory_error_detection_test.c b/test/tx/regression/threadx_block_memory_error_detection_test.c index 41148120..b0303b76 100644 --- a/test/tx/regression/threadx_block_memory_error_detection_test.c +++ b/test/tx/regression/threadx_block_memory_error_detection_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 error detection for simple memory block operations. */ #include @@ -29,7 +31,7 @@ static CHAR *pointer; static void thread_0_entry(ULONG thread_input); -UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, CHAR *name_ptr, ULONG block_size, +UINT _txe_block_pool_create(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG block_size, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); diff --git a/test/tx/regression/threadx_block_memory_information_test.c b/test/tx/regression/threadx_block_memory_information_test.c index 82d57f40..0c04cb7e 100644 --- a/test/tx/regression/threadx_block_memory_information_test.c +++ b/test/tx/regression/threadx_block_memory_information_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 block memory information services. */ #include @@ -68,7 +70,7 @@ static void thread_5_entry(ULONG thread_input); static void thread_6_entry(ULONG thread_input); /* Direct core function to bypass the error checking shell. */ -UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, CHAR **name, ULONG *available_blocks, +UINT _tx_block_pool_info_get(TX_BLOCK_POOL *pool_ptr, TX_NAME_CONST CHAR **name, ULONG *available_blocks, ULONG *total_blocks, TX_THREAD **first_suspended, ULONG *suspended_count, TX_BLOCK_POOL **next_pool); @@ -227,7 +229,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; VOID *pointer; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG total_blocks; TX_THREAD *first_suspended; @@ -369,7 +371,7 @@ ULONG timeouts; status += tx_block_pool_info_get(&block_pool_0, &name, &available, &total_blocks, &first_suspended, &suspended_count, &next_pool); /* Check for an error condition. */ - if ((status) || (available != block_pool_0.tx_block_pool_available) || (total_blocks != block_pool_0.tx_block_pool_total) || + if ((status) || (name != block_pool_0.tx_block_pool_name) || (available != block_pool_0.tx_block_pool_available) || (total_blocks != block_pool_0.tx_block_pool_total) || (first_suspended != &thread_4) || (suspended_count != block_pool_0.tx_block_pool_suspended_count) || (next_pool != &block_pool_0)) { diff --git a/test/tx/regression/threadx_byte_memory_basic_test.c b/test/tx/regression/threadx_byte_memory_basic_test.c index 45f92e12..6b916f67 100644 --- a/test/tx/regression/threadx_byte_memory_basic_test.c +++ b/test/tx/regression/threadx_byte_memory_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 simple memory byte pool creation, deletion, and allocates and releases. */ @@ -51,7 +53,7 @@ extern UINT test_byte_pool_create_init; extern VOID (*test_isr_dispatch)(void); -UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, CHAR *name_ptr, VOID *pool_start, +UINT _txe_byte_pool_create(TX_BYTE_POOL *pool_ptr, TX_NAME_CONST CHAR *name_ptr, VOID *pool_start, ULONG pool_size, UINT pool_control_block_size); diff --git a/test/tx/regression/threadx_byte_memory_information_test.c b/test/tx/regression/threadx_byte_memory_information_test.c index f1624a65..f65efac3 100644 --- a/test/tx/regression/threadx_byte_memory_information_test.c +++ b/test/tx/regression/threadx_byte_memory_information_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 byte memory information. */ #include @@ -226,7 +228,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; VOID *pointer; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG available; ULONG fragments; TX_THREAD *first_suspended; @@ -369,7 +371,7 @@ ULONG timeouts; status += tx_byte_pool_info_get(&byte_pool_0, &name, &available, &fragments, &first_suspended, &suspended_count, &next_pool); /* Check the status. */ - if ((status != TX_SUCCESS) || (available != byte_pool_0.tx_byte_pool_available) || (fragments != byte_pool_0.tx_byte_pool_fragments) || + if ((status != TX_SUCCESS) || (name != byte_pool_0.tx_byte_pool_name) || (available != byte_pool_0.tx_byte_pool_available) || (fragments != byte_pool_0.tx_byte_pool_fragments) || (first_suspended != &thread_4) || (suspended_count != byte_pool_0.tx_byte_pool_suspended_count) || (next_pool != &byte_pool_0)) { diff --git a/test/tx/regression/threadx_event_flag_basic_test.c b/test/tx/regression/threadx_event_flag_basic_test.c index 8ab990f7..fed424a6 100644 --- a/test/tx/regression/threadx_event_flag_basic_test.c +++ b/test/tx/regression/threadx_event_flag_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 simple event flag group creation, deletion, gets and sets. */ @@ -57,7 +59,7 @@ static TX_EVENT_FLAGS_GROUP group_3; static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, CHAR *name_ptr, UINT event_control_block_size); +UINT _txe_event_flags_create(TX_EVENT_FLAGS_GROUP *group_ptr, TX_NAME_CONST CHAR *name_ptr, UINT event_control_block_size); /* Prototype for test control return. */ diff --git a/test/tx/regression/threadx_event_flag_information_test.c b/test/tx/regression/threadx_event_flag_information_test.c index 45e547f9..1c7cfd2d 100644 --- a/test/tx/regression/threadx_event_flag_information_test.c +++ b/test/tx/regression/threadx_event_flag_information_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 the event flag group information gathering services. */ #include @@ -134,7 +136,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; ULONG actual_events; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG current_flags; TX_THREAD *first_suspended; ULONG suspended_count; @@ -356,7 +358,7 @@ ULONG timeouts; status += tx_event_flags_info_get(&group_0, &name, ¤t_flags, &first_suspended, &suspended_count, &next_group); /* Check the status. */ - if ((status != TX_SUCCESS) || (current_flags != group_0.tx_event_flags_group_current) || (first_suspended != TX_NULL) || (suspended_count != 0) || (next_group != &group_1)) + if ((status != TX_SUCCESS) || (name != group_0.tx_event_flags_group_name) || (current_flags != group_0.tx_event_flags_group_current) || (first_suspended != TX_NULL) || (suspended_count != 0) || (next_group != &group_1)) { /* Event flag error. */ diff --git a/test/tx/regression/threadx_mutex_basic_test.c b/test/tx/regression/threadx_mutex_basic_test.c index bb81eb9a..5a652843 100644 --- a/test/tx/regression/threadx_mutex_basic_test.c +++ b/test/tx/regression/threadx_mutex_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 the mutex create/delete and immediate return gets and puts. */ @@ -69,7 +71,7 @@ static void thread_2_entry(ULONG thread_input); static void thread_3_entry(ULONG thread_input); static void thread_4_entry(ULONG thread_input); -UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); +UINT _txe_mutex_create(TX_MUTEX *mutex_ptr, TX_NAME_CONST CHAR *name_ptr, UINT inherit, UINT mutex_control_block_size); /* Prototype for test control return. */ diff --git a/test/tx/regression/threadx_mutex_information_test.c b/test/tx/regression/threadx_mutex_information_test.c index 3829122c..fea78c04 100644 --- a/test/tx/regression/threadx_mutex_information_test.c +++ b/test/tx/regression/threadx_mutex_information_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 the mutex information services. */ #include @@ -134,7 +136,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG count; TX_THREAD *owner; TX_THREAD *first_suspended; @@ -300,7 +302,7 @@ ULONG inheritances; status += tx_mutex_info_get(&mutex_2, &name, &count, &owner, &first_suspended, &suspended_count, &next_mutex); /* Check status. */ - if ((status != TX_SUCCESS) || (count != mutex_2.tx_mutex_ownership_count) || (owner != mutex_2.tx_mutex_owner) || + if ((status != TX_SUCCESS) || (name != mutex_2.tx_mutex_name) || (count != mutex_2.tx_mutex_ownership_count) || (owner != mutex_2.tx_mutex_owner) || (first_suspended != mutex_2.tx_mutex_suspension_list) || (suspended_count != mutex_2.tx_mutex_suspended_count) || (next_mutex != mutex_2.tx_mutex_created_next)) { diff --git a/test/tx/regression/threadx_queue_basic_one_word_test.c b/test/tx/regression/threadx_queue_basic_one_word_test.c index 1abb6986..58142471 100644 --- a/test/tx/regression/threadx_queue_basic_one_word_test.c +++ b/test/tx/regression/threadx_queue_basic_one_word_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 immediate response queue services including create and delete. This test is for queue sizes of 1 ULONG. Two queues are used one with a capacity of 1 message and another with a capacity of 3 messages. */ @@ -51,7 +53,7 @@ static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_queue_create(TX_QUEUE *queue_ptr, CHAR *name_ptr, UINT message_size, +UINT _txe_queue_create(TX_QUEUE *queue_ptr, TX_NAME_CONST CHAR *name_ptr, UINT message_size, VOID *queue_start, ULONG queue_size, UINT queue_control_block_size); diff --git a/test/tx/regression/threadx_queue_information_test.c b/test/tx/regression/threadx_queue_information_test.c index f884bd0d..8929c465 100644 --- a/test/tx/regression/threadx_queue_information_test.c +++ b/test/tx/regression/threadx_queue_information_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 the queue information services. */ #include @@ -102,7 +104,7 @@ UINT status; ULONG source_message = 0x12345678UL; ULONG dest_message; ULONG expected_message; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG enqueued; ULONG available_storage; TX_THREAD *first_suspended; @@ -409,7 +411,7 @@ ULONG timeouts; status += tx_queue_info_get(&queue_0, &name, &enqueued, &available_storage, &first_suspended, &suspended_count, &next_queue); /* Check for errors. */ - if ((status != TX_SUCCESS) || (enqueued != queue_0.tx_queue_enqueued) || (available_storage != queue_0.tx_queue_available_storage) || + if ((status != TX_SUCCESS) || (name != queue_0.tx_queue_name) || (enqueued != queue_0.tx_queue_enqueued) || (available_storage != queue_0.tx_queue_available_storage) || (first_suspended != queue_0.tx_queue_suspension_list) || (suspended_count != queue_0.tx_queue_suspended_count) || (next_queue != queue_0.tx_queue_created_next)) { diff --git a/test/tx/regression/threadx_semaphore_basic_test.c b/test/tx/regression/threadx_semaphore_basic_test.c index 3209b586..a1a3d340 100644 --- a/test/tx/regression/threadx_semaphore_basic_test.c +++ b/test/tx/regression/threadx_semaphore_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 the semaphore create/delete and immediate return gets and puts. */ #include @@ -62,7 +64,7 @@ static TX_SEMAPHORE semaphore_3; static void thread_0_entry(ULONG thread_input); static void thread_1_entry(ULONG thread_input); -UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); +UINT _txe_semaphore_create(TX_SEMAPHORE *semaphore_ptr, TX_NAME_CONST CHAR *name_ptr, ULONG initial_count, UINT semaphore_control_block_size); /* Prototype for test control return. */ diff --git a/test/tx/regression/threadx_semaphore_information_test.c b/test/tx/regression/threadx_semaphore_information_test.c index ede276e9..c0bb3c72 100644 --- a/test/tx/regression/threadx_semaphore_information_test.c +++ b/test/tx/regression/threadx_semaphore_information_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 the semaphore information services. */ #include @@ -100,7 +102,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; ULONG current_value; TX_THREAD *first_suspended; ULONG suspended_count; @@ -211,7 +213,7 @@ ULONG timeouts; status += tx_semaphore_info_get(&semaphore_0, &name, ¤t_value, &first_suspended, &suspended_count, &next_semaphore); /* Check status. */ - if ((status != TX_SUCCESS) || (current_value != semaphore_0.tx_semaphore_count) || + if ((status != TX_SUCCESS) || (name != semaphore_0.tx_semaphore_name) || (current_value != semaphore_0.tx_semaphore_count) || (first_suspended != semaphore_0.tx_semaphore_suspension_list) || (suspended_count != semaphore_0.tx_semaphore_suspended_count) || (next_semaphore != semaphore_0.tx_semaphore_created_next)) { diff --git a/test/tx/regression/threadx_thread_basic_execution_test.c b/test/tx/regression/threadx_thread_basic_execution_test.c index 8e9586f2..ea9b1177 100644 --- a/test/tx/regression/threadx_thread_basic_execution_test.c +++ b/test/tx/regression/threadx_thread_basic_execution_test.c @@ -73,7 +73,7 @@ extern TX_TIMER_INTERNAL *_tx_timer_expired_timer_ptr; static void thread_0_entry(ULONG task_input); -UINT _txe_thread_create(TX_THREAD *thread_ptr, CHAR *name_ptr, +UINT _txe_thread_create(TX_THREAD *thread_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*entry_function)(ULONG), ULONG entry_input, VOID *stack_start, ULONG stack_size, UINT priority, UINT preempt_threshold, diff --git a/test/tx/regression/threadx_thread_information_test.c b/test/tx/regression/threadx_thread_information_test.c index b5d06e71..fef3473f 100644 --- a/test/tx/regression/threadx_thread_information_test.c +++ b/test/tx/regression/threadx_thread_information_test.c @@ -9,6 +9,8 @@ /* SPDX-License-Identifier: MIT */ /***************************************************************************/ +/* Portions of this file were generated with AI assistance. */ + /* This test is for the thread information services. */ #include @@ -63,7 +65,7 @@ static void thread_0_entry(ULONG thread_input) { UINT status; -CHAR *name; +TX_NAME_CONST CHAR *name; UINT state; ULONG run_count; UINT priority; @@ -96,7 +98,7 @@ ULONG idle_returns; status += tx_thread_info_get(&thread_0, &name, &state, &run_count, &priority, &preemption_threshold, &time_slice, &next_thread, &suspended_thread); /* Check for error status. */ - if ((status != TX_SUCCESS) || (state != TX_READY) || (run_count != thread_0.tx_thread_run_count) || (priority != 16) || (preemption_threshold != 16) || + if ((status != TX_SUCCESS) || (name != thread_0.tx_thread_name) || (state != TX_READY) || (run_count != thread_0.tx_thread_run_count) || (priority != 16) || (preemption_threshold != 16) || (time_slice != 0) || (next_thread != thread_0.tx_thread_created_next) || (suspended_thread != thread_0.tx_thread_suspended_next)) { diff --git a/test/tx/regression/threadx_timer_information_test.c b/test/tx/regression/threadx_timer_information_test.c index ae3bb414..cbb88239 100644 --- a/test/tx/regression/threadx_timer_information_test.c +++ b/test/tx/regression/threadx_timer_information_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 timer information services. */ #include @@ -104,7 +106,7 @@ static void thread_0_entry(ULONG thread_input) UINT status; UINT interrupt_status; -CHAR *name; +TX_NAME_CONST CHAR *name; UINT active; ULONG remaining_ticks; ULONG reschedule_ticks; @@ -231,7 +233,7 @@ TX_TIMER_INTERNAL **list_head; status += tx_timer_info_get(&timer_0, &name, &active, &remaining_ticks, &reschedule_ticks, &next_timer); /* Check for successful completion. */ - if ((status != TX_SUCCESS) || (active != TX_TRUE) || (remaining_ticks != 100) || (reschedule_ticks != 200) || (next_timer != &timer_1)) + if ((status != TX_SUCCESS) || (name != timer_0.tx_timer_name) || (active != TX_TRUE) || (remaining_ticks != 100) || (reschedule_ticks != 200) || (next_timer != &timer_1)) { /* Application timer error. */ diff --git a/test/tx/regression/threadx_timer_simple_test.c b/test/tx/regression/threadx_timer_simple_test.c index cad67086..f9c93ee4 100644 --- a/test/tx/regression/threadx_timer_simple_test.c +++ b/test/tx/regression/threadx_timer_simple_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 a simple application timer services, including create, activate, deactivate, change, and delete. */ @@ -63,7 +65,7 @@ static void thread_1_entry(ULONG thread_input); static void timer_0_expiration(ULONG timer_input); static void timer_1_expiration(ULONG timer_input); -UINT _txe_timer_create(TX_TIMER *timer_ptr, CHAR *name_ptr, +UINT _txe_timer_create(TX_TIMER *timer_ptr, TX_NAME_CONST CHAR *name_ptr, VOID (*expiration_function)(ULONG), ULONG expiration_input, ULONG initial_ticks, ULONG reschedule_ticks, UINT auto_activate, UINT timer_control_block_size); diff --git a/test/tx/regression/threadx_trace_basic_test.c b/test/tx/regression/threadx_trace_basic_test.c index 19f6953b..cacf72b3 100644 --- a/test/tx/regression/threadx_trace_basic_test.c +++ b/test/tx/regression/threadx_trace_basic_test.c @@ -25,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; diff --git a/utility/rtos_compatibility_layers/FreeRTOS/tx_freertos.c b/utility/rtos_compatibility_layers/FreeRTOS/tx_freertos.c index 1cceafb3..3391bf8a 100644 --- a/utility/rtos_compatibility_layers/FreeRTOS/tx_freertos.c +++ b/utility/rtos_compatibility_layers/FreeRTOS/tx_freertos.c @@ -652,7 +652,7 @@ void vTaskPrioritySet(TaskHandle_t xTask, char *pcTaskGetName(TaskHandle_t xTaskToQuery) { TX_THREAD *p_thread; - char *p_task_name; + const char *p_task_name; UINT ret; if(xTaskToQuery == NULL) { @@ -667,7 +667,8 @@ char *pcTaskGetName(TaskHandle_t xTaskToQuery) return 0; } - return p_task_name; + /* FreeRTOS exposes task names through a writable pointer type. */ + return (char *)p_task_name; } -- cgit v1.3.1