summaryrefslogtreecommitdiff
path: root/common_modules/module_manager/src/txm_module_manager_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'common_modules/module_manager/src/txm_module_manager_util.c')
-rw-r--r--common_modules/module_manager/src/txm_module_manager_util.c170
1 files changed, 161 insertions, 9 deletions
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 23a989ac..0e5abe5e 100644
--- a/common_modules/module_manager/src/txm_module_manager_util.c
+++ b/common_modules/module_manager/src/txm_module_manager_util.c
@@ -104,7 +104,7 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_instan
/* FUNCTION RELEASE */
/* */
/* _txm_module_manager_created_object_check PORTABLE C */
-/* 6.1 */
+/* 6.1x */
/* AUTHOR */
/* */
/* Scott Larson, Microsoft Corporation */
@@ -137,6 +137,10 @@ UINT _txm_module_manager_object_memory_check(TXM_MODULE_INSTANCE *module_instan
/* DATE NAME DESCRIPTION */
/* */
/* 09-30-2020 Scott Larson Initial Version 6.1 */
+/* xx-xx-2025 William E. Lamie Modified comment(s), and */
+/* removed module local memory */
+/* check, resulting in */
+/* version 6.1x */
/* */
/**************************************************************************/
UCHAR _txm_module_manager_created_object_check(TXM_MODULE_INSTANCE *module_instance, VOID *object_ptr)
@@ -144,15 +148,9 @@ UCHAR _txm_module_manager_created_object_check(TXM_MODULE_INSTANCE *module_insta
TXM_MODULE_ALLOCATED_OBJECT *allocated_object_ptr;
- /* Determine if the socket control block is inside the module. */
- if ( (((CHAR *) object_ptr) >= ((CHAR *) module_instance -> txm_module_instance_data_start)) &&
- (((CHAR *) object_ptr) < ((CHAR *) module_instance -> txm_module_instance_data_end)))
- {
- return TX_TRUE;
- }
- /* Determine if this object control block was allocated by this module instance. */
- else if (_txm_module_manager_object_pool_created)
+ /* Determine if the object pool has been created. */
+ if (_txm_module_manager_object_pool_created)
{
/* Determine if the current object is from the pool of dynamically allocated objects. */
@@ -340,6 +338,158 @@ CHAR object_name_char;
/* */
/* FUNCTION RELEASE */
/* */
+/* _txm_module_manager_param_check_object_for_creation PORTABLE C */
+/* 6.4.3 */
+/* AUTHOR */
+/* */
+/* William E. Lamie, RTOSX */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function checks to make sure the object pointer for one of the */
+/* creation APIs is valid. */
+/* */
+/* INPUT */
+/* */
+/* module_instance Requesting module instance pointer*/
+/* object_ptr Address of object memory area */
+/* ojbect_size Size of object memory area */
+/* */
+/* OUTPUT */
+/* */
+/* TX_TRUE Valid object pointer */
+/* TX_FALSE Invalid object pointer */
+/* */
+/* CALLS */
+/* */
+/* None */
+/* */
+/* CALLED BY */
+/* */
+/* txm_module_manager_* Module manager functions */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* xx-xx-2025 William E. Lamie Initial Version 6.4.3 */
+/* */
+/**************************************************************************/
+UINT _txm_module_manager_param_check_object_for_creation(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size)
+{
+
+ /* Determine if the object pointer is NULL. */
+ if ((void *) object_ptr == TX_NULL)
+ {
+
+ /* Object pointer is NULL, which is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Determine if the object pointer is inside the module object pool. */
+ if (TXM_MODULE_MANAGER_ENSURE_INSIDE_OBJ_POOL(module_instance, object_ptr, object_size) == TX_FALSE)
+ {
+
+ /* Object pointer is not inside the object pool, which is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Determine if the object size is correct. */
+ if (_txm_module_manager_object_size_check(object_ptr, object_size) != TX_SUCCESS)
+ {
+
+ /* Object size is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Determine if the ojbect has already been created. */
+ if (_txm_module_manager_created_object_check(module_instance, (void *) object_ptr) == TX_FALSE)
+ {
+
+ /* Object has already been created, which is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Everything is okay with the object, return TX_TRUE. */
+ return(TX_TRUE);
+}
+
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
+/* _txm_module_manager_param_check_object_for_use PORTABLE C */
+/* 6.4.3 */
+/* AUTHOR */
+/* */
+/* William E. Lamie, RTOSX */
+/* */
+/* DESCRIPTION */
+/* */
+/* This function checks to make sure the object pointer is valid. */
+/* */
+/* INPUT */
+/* */
+/* module_instance Requesting module instance pointer*/
+/* object_ptr Address of object memory area */
+/* ojbect_size Size of object memory area */
+/* */
+/* OUTPUT */
+/* */
+/* TX_TRUE Valid object pointer */
+/* TX_FALSE Invalid object pointer */
+/* */
+/* CALLS */
+/* */
+/* None */
+/* */
+/* CALLED BY */
+/* */
+/* txm_module_manager_* Module manager functions */
+/* */
+/* RELEASE HISTORY */
+/* */
+/* DATE NAME DESCRIPTION */
+/* */
+/* xx-xx-2025 William E. Lamie Initial Version 6.4.3 */
+/* */
+/**************************************************************************/
+UINT _txm_module_manager_param_check_object_for_use(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE object_ptr, ULONG object_size)
+{
+
+ /* Determine if the object pointer is NULL. */
+ if ((void *) object_ptr == TX_NULL)
+ {
+
+ /* Object pointer is NULL, which is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Determine if the object pointer is inside the module object pool. */
+ if (TXM_MODULE_MANAGER_ENSURE_OUTSIDE_MODULE(module_instance, object_ptr, object_size) == TX_FALSE)
+ {
+
+ /* Object pointer is not inside the object pool, which is invalid. */
+ return(TX_FALSE);
+ }
+
+ /* Define application-specific object memory check. */
+#ifdef TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_CHECK
+
+ /* Bring in the application-spefic objeft memory check, defined by the user. */
+ TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_CHECK
+#endif /* TXM_MODULE_MANGER_APPLICATION_VALID_OBJECT_MEMORY_ENABLE */
+
+ /* Everything is okay with the object, return TX_TRUE. */
+ return(TX_TRUE);
+}
+
+
+/**************************************************************************/
+/* */
+/* FUNCTION RELEASE */
+/* */
/* _txm_module_manager_util_code_allocation_size_and_alignment_get */
/* PORTABLE C */
/* 6.1 */
@@ -414,3 +564,5 @@ ULONG data_alignment_ignored;
/* Return success. */
return(TX_SUCCESS);
}
+
+