summaryrefslogtreecommitdiff
path: root/common_modules/module_lib/src/txm_module_object_deallocate.c
diff options
context:
space:
mode:
Diffstat (limited to 'common_modules/module_lib/src/txm_module_object_deallocate.c')
-rw-r--r--common_modules/module_lib/src/txm_module_object_deallocate.c30
1 files changed, 29 insertions, 1 deletions
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..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,6 +9,8 @@
* SPDX-License-Identifier: MIT
**************************************************************************/
+// Portions of this file were generated with AI assistance.
+
/**************************************************************************/
/**************************************************************************/
@@ -23,6 +25,31 @@
#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.
+ *
+ * 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. Deallocating a " \
+ "live kernel object returns TX_DELETE_ERROR.")
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
@@ -43,7 +70,8 @@
/* */
/* OUTPUT */
/* */
-/* status Completion status */
+/* status Completion status, TX_DELETE_ERROR*/
+/* if a live object is there */
/* */
/* CALLS */
/* */