summaryrefslogtreecommitdiff
path: root/common_modules/module_manager/src/txm_module_manager_thread_reset.c
diff options
context:
space:
mode:
Diffstat (limited to 'common_modules/module_manager/src/txm_module_manager_thread_reset.c')
-rw-r--r--common_modules/module_manager/src/txm_module_manager_thread_reset.c16
1 files changed, 16 insertions, 0 deletions
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 75dd4a49..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,6 +9,8 @@
* SPDX-License-Identifier: MIT
**************************************************************************/
+// Portions of this file were generated with AI assistance.
+
/**************************************************************************/
/**************************************************************************/
@@ -106,6 +108,20 @@ TXM_MODULE_THREAD_ENTRY_INFO *thread_entry_info;
status = TX_NOT_DONE;
}
}
+
+ /* Resetting a thread means rebuilding its stack around a module's shell entry
+ function, so the thread has to be one a module manager created. A thread the
+ application created carries no module instance, and the fields this function
+ goes on to read from it -- the shell entry function it builds the new stack
+ frame around -- would be read through a null pointer in privileged mode. A
+ module can name such a thread: any thread the system created can be found by
+ name, and one that has run to completion satisfies the state test above. */
+ if (thread_ptr -> tx_thread_module_instance_ptr == TX_NULL)
+ {
+
+ /* Not a module thread, so there is nothing here to reset. */
+ status = TX_NOT_DONE;
+ }
}
/* Is the request valid? */