mirror of
https://github.com/azure-rtos/threadx
synced 2025-02-06 08:08:27 +08:00
3329 lines
120 KiB
C
3329 lines
120 KiB
C
/***************************************************************************
|
|
* Copyright (c) 2024 Microsoft Corporation
|
|
*
|
|
* 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.
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
**************************************************************************/
|
|
|
|
|
|
/**************************************************************************/
|
|
/**************************************************************************/
|
|
/** */
|
|
/** ThreadX Component */
|
|
/** */
|
|
/** Module Manager */
|
|
/** */
|
|
/**************************************************************************/
|
|
/**************************************************************************/
|
|
|
|
#ifndef TXM_BLOCK_ALLOCATE_CALL_NOT_USED
|
|
/* UINT _txe_block_allocate(
|
|
TX_BLOCK_POOL *pool_ptr, -> param_0
|
|
VOID **block_ptr, -> param_1
|
|
ULONG wait_option -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_allocate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(VOID *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_allocate(
|
|
(TX_BLOCK_POOL *) param_0,
|
|
(VOID **) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
ULONG block_size, -> extra_parameters[0]
|
|
VOID *pool_start, -> extra_parameters[1]
|
|
ULONG pool_size, -> extra_parameters[2]
|
|
UINT pool_control_block_size -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], extra_parameters[2]))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_pool_create(
|
|
(TX_BLOCK_POOL *) param_0,
|
|
(CHAR *) param_1,
|
|
(ULONG) extra_parameters[0],
|
|
(VOID *) extra_parameters[1],
|
|
(ULONG) extra_parameters[2],
|
|
(UINT) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BLOCK_POOL_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_block_pool_delete(
|
|
TX_BLOCK_POOL *pool_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_pool_delete(
|
|
(TX_BLOCK_POOL *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
ULONG *available_blocks, -> extra_parameters[0]
|
|
ULONG *total_blocks, -> extra_parameters[1]
|
|
TX_THREAD **first_suspended, -> extra_parameters[2]
|
|
ULONG *suspended_count, -> extra_parameters[3]
|
|
TX_BLOCK_POOL **next_pool -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(TX_BLOCK_POOL *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_pool_info_get(
|
|
(TX_BLOCK_POOL *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(TX_THREAD **) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(TX_BLOCK_POOL **) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BLOCK_POOL_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_block_pool_performance_info_get(
|
|
TX_BLOCK_POOL *pool_ptr, -> param_0
|
|
ULONG *allocates, -> param_1
|
|
ULONG *releases, -> extra_parameters[0]
|
|
ULONG *suspensions, -> extra_parameters[1]
|
|
ULONG *timeouts -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_block_pool_performance_info_get(
|
|
(TX_BLOCK_POOL *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_block_pool_performance_system_info_get(
|
|
ULONG *allocates, -> param_0
|
|
ULONG *releases, -> param_1
|
|
ULONG *suspensions, -> extra_parameters[0]
|
|
ULONG *timeouts -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_block_pool_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BLOCK_POOL_PRIORITIZE_CALL_NOT_USED
|
|
/* UINT _txe_block_pool_prioritize(
|
|
TX_BLOCK_POOL *pool_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_pool_prioritize_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BLOCK_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_pool_prioritize(
|
|
(TX_BLOCK_POOL *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BLOCK_RELEASE_CALL_NOT_USED
|
|
/* UINT _txe_block_release(
|
|
VOID *block_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_block_release_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
ALIGN_TYPE block_header_start;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
/* Is the pointer non-null? */
|
|
if ((void *) param_0 != TX_NULL)
|
|
{
|
|
|
|
/* Calculate the beginning of the header info for this block (the header
|
|
consists of 1 pointers. */
|
|
block_header_start = param_0 - sizeof(ALIGN_TYPE);
|
|
|
|
if (/* Did we underflow when doing the subtract? */
|
|
(block_header_start > param_0) ||
|
|
/* Ensure the pointer is inside the module's data. Note that we only
|
|
check the pointer in the header because only that pointer is
|
|
dereferenced during the pointer's validity check in _tx_block_release. */
|
|
(!TXM_MODULE_MANAGER_CHECK_INSIDE_DATA(module_instance, block_header_start, sizeof(ALIGN_TYPE))))
|
|
{
|
|
|
|
/* Invalid pointer. */
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
}
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_block_release(
|
|
(VOID *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_ALLOCATE_CALL_NOT_USED
|
|
/* UINT _txe_byte_allocate(
|
|
TX_BYTE_POOL *pool_ptr, -> param_0
|
|
VOID **memory_ptr, -> param_1
|
|
ULONG memory_size, -> extra_parameters[0]
|
|
ULONG wait_option -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_allocate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(VOID *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_allocate(
|
|
(TX_BYTE_POOL *) param_0,
|
|
(VOID **) param_1,
|
|
(ULONG) extra_parameters[0],
|
|
(ULONG) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
VOID *pool_start, -> extra_parameters[0]
|
|
ULONG pool_size, -> extra_parameters[1]
|
|
UINT pool_control_block_size -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], extra_parameters[1]))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_pool_create(
|
|
(TX_BYTE_POOL *) param_0,
|
|
(CHAR *) param_1,
|
|
(VOID *) extra_parameters[0],
|
|
(ULONG) extra_parameters[1],
|
|
(UINT) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_POOL_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_byte_pool_delete(
|
|
TX_BYTE_POOL *pool_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_pool_delete(
|
|
(TX_BYTE_POOL *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
ULONG *available_bytes, -> extra_parameters[0]
|
|
ULONG *fragments, -> extra_parameters[1]
|
|
TX_THREAD **first_suspended, -> extra_parameters[2]
|
|
ULONG *suspended_count, -> extra_parameters[3]
|
|
TX_BYTE_POOL **next_pool -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(TX_BYTE_POOL *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_pool_info_get(
|
|
(TX_BYTE_POOL *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(TX_THREAD **) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(TX_BYTE_POOL **) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_POOL_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_byte_pool_performance_info_get(
|
|
TX_BYTE_POOL *pool_ptr, -> param_0
|
|
ULONG *allocates, -> param_1
|
|
ULONG *releases, -> extra_parameters[0]
|
|
ULONG *fragments_searched, -> extra_parameters[1]
|
|
ULONG *merges, -> extra_parameters[2]
|
|
ULONG *splits, -> extra_parameters[3]
|
|
ULONG *suspensions, -> extra_parameters[4]
|
|
ULONG *timeouts -> extra_parameters[5]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[6])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[5], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_byte_pool_performance_info_get(
|
|
(TX_BYTE_POOL *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4],
|
|
(ULONG *) extra_parameters[5]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_byte_pool_performance_system_info_get(
|
|
ULONG *allocates, -> param_0
|
|
ULONG *releases, -> param_1
|
|
ULONG *fragments_searched, -> extra_parameters[0]
|
|
ULONG *merges, -> extra_parameters[1]
|
|
ULONG *splits, -> extra_parameters[2]
|
|
ULONG *suspensions, -> extra_parameters[3]
|
|
ULONG *timeouts -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_byte_pool_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_POOL_PRIORITIZE_CALL_NOT_USED
|
|
/* UINT _txe_byte_pool_prioritize(
|
|
TX_BYTE_POOL *pool_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_pool_prioritize_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_BYTE_POOL)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_pool_prioritize(
|
|
(TX_BYTE_POOL *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_BYTE_RELEASE_CALL_NOT_USED
|
|
/* UINT _txe_byte_release(
|
|
VOID *memory_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_byte_release_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
ALIGN_TYPE block_header_start;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
/* Is the pointer non-null? */
|
|
if ((void *) param_0 != TX_NULL)
|
|
{
|
|
|
|
/* Calculate the beginning of the header info for this block (the header
|
|
consists of 2 pointers). */
|
|
block_header_start = param_0 - 2*sizeof(ALIGN_TYPE);
|
|
|
|
if (/* Did we underflow when doing the subtract? */
|
|
(block_header_start > param_0) ||
|
|
/* Ensure the pointer is inside the module's data. Note that we only
|
|
check the pointers in the header because only those two are
|
|
dereferenced during the pointer's validity check in _tx_byte_release. */
|
|
(!TXM_MODULE_MANAGER_CHECK_INSIDE_DATA(module_instance, block_header_start, 2*sizeof(ALIGN_TYPE))))
|
|
{
|
|
|
|
/* Invalid pointer. */
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
}
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_byte_release(
|
|
(VOID *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
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)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_create(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(CHAR *) param_1,
|
|
(UINT) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_event_flags_delete(
|
|
TX_EVENT_FLAGS_GROUP *group_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_delete(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_GET_CALL_NOT_USED
|
|
/* UINT _txe_event_flags_get(
|
|
TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0
|
|
ULONG requested_flags, -> param_1
|
|
UINT get_option, -> extra_parameters[0]
|
|
ULONG *actual_flags_ptr, -> extra_parameters[1]
|
|
ULONG wait_option -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_get(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(ULONG) param_1,
|
|
(UINT) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#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
|
|
ULONG *current_flags, -> extra_parameters[0]
|
|
TX_THREAD **first_suspended, -> extra_parameters[1]
|
|
ULONG *suspended_count, -> extra_parameters[2]
|
|
TX_EVENT_FLAGS_GROUP **next_group -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(TX_EVENT_FLAGS_GROUP *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_info_get(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(TX_THREAD **) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(TX_EVENT_FLAGS_GROUP **) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_event_flags_performance_info_get(
|
|
TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0
|
|
ULONG *sets, -> param_1
|
|
ULONG *gets, -> extra_parameters[0]
|
|
ULONG *suspensions, -> extra_parameters[1]
|
|
ULONG *timeouts -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_event_flags_performance_info_get(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_event_flags_performance_system_info_get(
|
|
ULONG *sets, -> param_0
|
|
ULONG *gets, -> param_1
|
|
ULONG *suspensions, -> extra_parameters[0]
|
|
ULONG *timeouts -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_event_flags_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_SET_CALL_NOT_USED
|
|
/* UINT _txe_event_flags_set(
|
|
TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0
|
|
ULONG flags_to_set, -> param_1
|
|
UINT set_option -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_set_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_set(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(ULONG) param_1,
|
|
(UINT) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_EVENT_FLAGS_SET_NOTIFY_CALL_NOT_USED
|
|
/* UINT _txe_event_flags_set_notify(
|
|
TX_EVENT_FLAGS_GROUP *group_ptr, -> param_0
|
|
VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *) -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_event_flags_set_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_EVENT_FLAGS_GROUP *event_flags_ptr = (TX_EVENT_FLAGS_GROUP *)param_0;
|
|
VOID (*events_set_notify)(TX_EVENT_FLAGS_GROUP *);
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_EVENT_FLAGS_GROUP)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* Since we need to write to the object, ensure it's valid. */
|
|
if ((event_flags_ptr == TX_NULL) || (event_flags_ptr -> tx_event_flags_group_id != TX_EVENT_FLAGS_ID))
|
|
return(TX_GROUP_ERROR);
|
|
}
|
|
|
|
/* Is it a disable request? */
|
|
if ((void *) param_1 == TX_NULL)
|
|
{
|
|
|
|
/* Clear the callback. */
|
|
events_set_notify = (VOID (*)(TX_EVENT_FLAGS_GROUP *)) TX_NULL;
|
|
}
|
|
else
|
|
{
|
|
|
|
/* Setup trampoline values. */
|
|
event_flags_ptr -> tx_event_flags_group_module_instance = (VOID *) module_instance;
|
|
event_flags_ptr -> tx_event_flags_group_set_module_notify = (VOID (*)(TX_EVENT_FLAGS_GROUP *)) param_1;
|
|
events_set_notify = _txm_module_manager_event_flags_notify_trampoline;
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_event_flags_set_notify(
|
|
(TX_EVENT_FLAGS_GROUP *) param_0,
|
|
(VOID (*)(TX_EVENT_FLAGS_GROUP *)) events_set_notify
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_CREATE_CALL_NOT_USED
|
|
/* UINT _txe_mutex_create(
|
|
TX_MUTEX *mutex_ptr, -> param_0
|
|
CHAR *name_ptr, -> param_1
|
|
UINT inherit, -> extra_parameters[0]
|
|
UINT mutex_control_block_size -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_create(
|
|
(TX_MUTEX *) param_0,
|
|
(CHAR *) param_1,
|
|
(UINT) extra_parameters[0],
|
|
(UINT) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_mutex_delete(
|
|
TX_MUTEX *mutex_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_delete(
|
|
(TX_MUTEX *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_GET_CALL_NOT_USED
|
|
/* UINT _txe_mutex_get(
|
|
TX_MUTEX *mutex_ptr, -> param_0
|
|
ULONG wait_option -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_get(
|
|
(TX_MUTEX *) param_0,
|
|
(ULONG) param_1
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_INFO_GET_CALL_NOT_USED
|
|
/* UINT _txe_mutex_info_get(
|
|
TX_MUTEX *mutex_ptr, -> param_0
|
|
CHAR **name, -> param_1
|
|
ULONG *count, -> extra_parameters[0]
|
|
TX_THREAD **owner, -> extra_parameters[1]
|
|
TX_THREAD **first_suspended, -> extra_parameters[2]
|
|
ULONG *suspended_count, -> extra_parameters[3]
|
|
TX_MUTEX **next_mutex -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(TX_MUTEX *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_info_get(
|
|
(TX_MUTEX *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(TX_THREAD **) extra_parameters[1],
|
|
(TX_THREAD **) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(TX_MUTEX **) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_mutex_performance_info_get(
|
|
TX_MUTEX *mutex_ptr, -> param_0
|
|
ULONG *puts, -> param_1
|
|
ULONG *gets, -> extra_parameters[0]
|
|
ULONG *suspensions, -> extra_parameters[1]
|
|
ULONG *timeouts, -> extra_parameters[2]
|
|
ULONG *inversions, -> extra_parameters[3]
|
|
ULONG *inheritances -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_mutex_performance_info_get(
|
|
(TX_MUTEX *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_mutex_performance_system_info_get(
|
|
ULONG *puts, -> param_0
|
|
ULONG *gets, -> param_1
|
|
ULONG *suspensions, -> extra_parameters[0]
|
|
ULONG *timeouts, -> extra_parameters[1]
|
|
ULONG *inversions, -> extra_parameters[2]
|
|
ULONG *inheritances -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_mutex_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_PRIORITIZE_CALL_NOT_USED
|
|
/* UINT _txe_mutex_prioritize(
|
|
TX_MUTEX *mutex_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_prioritize_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_prioritize(
|
|
(TX_MUTEX *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MUTEX_PUT_CALL_NOT_USED
|
|
/* UINT _txe_mutex_put(
|
|
TX_MUTEX *mutex_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_mutex_put_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_MUTEX)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_mutex_put(
|
|
(TX_MUTEX *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_CREATE_CALL_NOT_USED
|
|
/* UINT _txe_queue_create(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
CHAR *name_ptr, -> param_1
|
|
UINT message_size, -> extra_parameters[0]
|
|
VOID *queue_start, -> extra_parameters[1]
|
|
ULONG queue_size, -> extra_parameters[2]
|
|
UINT queue_control_block_size -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], extra_parameters[2]))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_create(
|
|
(TX_QUEUE *) param_0,
|
|
(CHAR *) param_1,
|
|
(UINT) extra_parameters[0],
|
|
(VOID *) extra_parameters[1],
|
|
(ULONG) extra_parameters[2],
|
|
(UINT) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_queue_delete(
|
|
TX_QUEUE *queue_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_delete(
|
|
(TX_QUEUE *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_FLUSH_CALL_NOT_USED
|
|
/* UINT _txe_queue_flush(
|
|
TX_QUEUE *queue_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_flush_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_flush(
|
|
(TX_QUEUE *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_FRONT_SEND_CALL_NOT_USED
|
|
/* UINT _txe_queue_front_send(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
VOID *source_ptr, -> param_1
|
|
ULONG wait_option -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_front_send_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_QUEUE *queue_ptr;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* We need to get the size of the message from the queue. */
|
|
queue_ptr = (TX_QUEUE *) param_0;
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_READ(module_instance, param_1, queue_ptr -> tx_queue_message_size))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_front_send(
|
|
(TX_QUEUE *) param_0,
|
|
(VOID *) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _txe_queue_info_get(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
CHAR **name, -> param_1
|
|
ULONG *enqueued, -> extra_parameters[0]
|
|
ULONG *available_storage, -> extra_parameters[1]
|
|
TX_THREAD **first_suspended, -> extra_parameters[2]
|
|
ULONG *suspended_count, -> extra_parameters[3]
|
|
TX_QUEUE **next_queue -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(TX_QUEUE *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_info_get(
|
|
(TX_QUEUE *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(TX_THREAD **) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(TX_QUEUE **) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_queue_performance_info_get(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
ULONG *messages_sent, -> param_1
|
|
ULONG *messages_received, -> extra_parameters[0]
|
|
ULONG *empty_suspensions, -> extra_parameters[1]
|
|
ULONG *full_suspensions, -> extra_parameters[2]
|
|
ULONG *full_errors, -> extra_parameters[3]
|
|
ULONG *timeouts -> extra_parameters[4]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[5])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_queue_performance_info_get(
|
|
(TX_QUEUE *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_queue_performance_system_info_get(
|
|
ULONG *messages_sent, -> param_0
|
|
ULONG *messages_received, -> param_1
|
|
ULONG *empty_suspensions, -> extra_parameters[0]
|
|
ULONG *full_suspensions, -> extra_parameters[1]
|
|
ULONG *full_errors, -> extra_parameters[2]
|
|
ULONG *timeouts -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_queue_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_PRIORITIZE_CALL_NOT_USED
|
|
/* UINT _txe_queue_prioritize(
|
|
TX_QUEUE *queue_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_prioritize_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_prioritize(
|
|
(TX_QUEUE *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_RECEIVE_CALL_NOT_USED
|
|
/* UINT _txe_queue_receive(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
VOID *destination_ptr, -> param_1
|
|
ULONG wait_option -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_receive_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_QUEUE *queue_ptr;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* We need to get the max size of the buffer from the queue. */
|
|
queue_ptr = (TX_QUEUE *) param_0;
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)*queue_ptr -> tx_queue_message_size))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_receive(
|
|
(TX_QUEUE *) param_0,
|
|
(VOID *) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_SEND_CALL_NOT_USED
|
|
/* UINT _txe_queue_send(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
VOID *source_ptr, -> param_1
|
|
ULONG wait_option -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_send_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_QUEUE *queue_ptr;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* We need to get the size of the message from the queue. */
|
|
queue_ptr = (TX_QUEUE *) param_0;
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_READ(module_instance, param_1, sizeof(ULONG)*queue_ptr -> tx_queue_message_size))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_send(
|
|
(TX_QUEUE *) param_0,
|
|
(VOID *) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_QUEUE_SEND_NOTIFY_CALL_NOT_USED
|
|
/* UINT _txe_queue_send_notify(
|
|
TX_QUEUE *queue_ptr, -> param_0
|
|
VOID (*queue_send_notify)(TX_QUEUE *notify_queue_ptr) -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_queue_send_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_QUEUE *queue_ptr = (TX_QUEUE *) param_0;
|
|
VOID (*queue_send_notify)(TX_QUEUE *);
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_QUEUE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* Since we need to write to the object, ensure it's valid. */
|
|
if ((queue_ptr == TX_NULL) || (queue_ptr -> tx_queue_id != TX_QUEUE_ID))
|
|
return(TX_QUEUE_ERROR);
|
|
}
|
|
|
|
/* Is it a disable request? */
|
|
if ((void *) param_1 == TX_NULL)
|
|
{
|
|
|
|
/* Clear the callback. */
|
|
queue_send_notify = (VOID (*)(TX_QUEUE *)) TX_NULL;
|
|
}
|
|
else
|
|
{
|
|
|
|
/* Setup trampoline values. */
|
|
queue_ptr -> tx_queue_module_instance = (VOID *) module_instance;
|
|
queue_ptr -> tx_queue_send_module_notify = (VOID (*)(TX_QUEUE *)) param_1;
|
|
queue_send_notify = _txm_module_manager_queue_notify_trampoline;
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_queue_send_notify(
|
|
(TX_QUEUE *) param_0,
|
|
(VOID (*)(TX_QUEUE *notify_queue_ptr)) queue_send_notify
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_CEILING_PUT_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_ceiling_put(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
ULONG ceiling -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_ceiling_put_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_ceiling_put(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(ULONG) param_1
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_CREATE_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_create(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
CHAR *name_ptr, -> param_1
|
|
ULONG initial_count, -> extra_parameters[0]
|
|
UINT semaphore_control_block_size -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_create(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(CHAR *) param_1,
|
|
(ULONG) extra_parameters[0],
|
|
(UINT) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_delete(
|
|
TX_SEMAPHORE *semaphore_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_delete(
|
|
(TX_SEMAPHORE *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_GET_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_get(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
ULONG wait_option -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_get(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(ULONG) param_1
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_info_get(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
CHAR **name, -> param_1
|
|
ULONG *current_value, -> extra_parameters[0]
|
|
TX_THREAD **first_suspended, -> extra_parameters[1]
|
|
ULONG *suspended_count, -> extra_parameters[2]
|
|
TX_SEMAPHORE **next_semaphore -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(TX_SEMAPHORE *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_info_get(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(CHAR **) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(TX_THREAD **) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(TX_SEMAPHORE **) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_semaphore_performance_info_get(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
ULONG *puts, -> param_1
|
|
ULONG *gets, -> extra_parameters[0]
|
|
ULONG *suspensions, -> extra_parameters[1]
|
|
ULONG *timeouts -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_semaphore_performance_info_get(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_semaphore_performance_system_info_get(
|
|
ULONG *puts, -> param_0
|
|
ULONG *gets, -> param_1
|
|
ULONG *suspensions, -> extra_parameters[0]
|
|
ULONG *timeouts -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_semaphore_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_PRIORITIZE_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_prioritize(
|
|
TX_SEMAPHORE *semaphore_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_prioritize_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_prioritize(
|
|
(TX_SEMAPHORE *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_PUT_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_put(
|
|
TX_SEMAPHORE *semaphore_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_put_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_put(
|
|
(TX_SEMAPHORE *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_SEMAPHORE_PUT_NOTIFY_CALL_NOT_USED
|
|
/* UINT _txe_semaphore_put_notify(
|
|
TX_SEMAPHORE *semaphore_ptr, -> param_0
|
|
VOID (*semaphore_put_notify)(TX_SEMAPHORE *notify_semaphore_ptr) -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_semaphore_put_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_SEMAPHORE *semaphore_ptr = (TX_SEMAPHORE *) param_0;
|
|
VOID (*semaphore_put_notify)(TX_SEMAPHORE *);
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_SEMAPHORE)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* Since we need to write to the object, ensure it's valid. */
|
|
if ((semaphore_ptr == TX_NULL) || (semaphore_ptr -> tx_semaphore_id != TX_SEMAPHORE_ID))
|
|
return(TX_SEMAPHORE_ERROR);
|
|
}
|
|
|
|
/* Is it a disable request? */
|
|
if ((void *) param_1 == TX_NULL)
|
|
{
|
|
|
|
/* Clear the callback. */
|
|
semaphore_put_notify = (VOID (*)(TX_SEMAPHORE *)) TX_NULL;
|
|
}
|
|
else
|
|
{
|
|
|
|
/* Setup trampoline values. */
|
|
semaphore_ptr -> tx_semaphore_module_instance = (VOID *) module_instance;
|
|
semaphore_ptr -> tx_semaphore_put_module_notify = (VOID (*)(TX_SEMAPHORE *)) param_1;
|
|
semaphore_put_notify = _txm_module_manager_semaphore_notify_trampoline;
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_semaphore_put_notify(
|
|
(TX_SEMAPHORE *) param_0,
|
|
(VOID (*)(TX_SEMAPHORE *notify_semaphore_ptr)) semaphore_put_notify
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_CREATE_CALL_NOT_USED
|
|
/* UINT _txe_thread_create(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
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]
|
|
ULONG stack_size, -> extra_parameters[3]
|
|
UINT priority, -> extra_parameters[4]
|
|
UINT preempt_threshold, -> extra_parameters[5]
|
|
ULONG time_slice, -> extra_parameters[6]
|
|
UINT auto_start, -> extra_parameters[7]
|
|
UINT thread_control_block_size -> extra_parameters[8]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[9])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], extra_parameters[3]))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (extra_parameters[4] < module_instance -> txm_module_instance_maximum_priority)
|
|
return(TX_PRIORITY_ERROR);
|
|
|
|
if (extra_parameters[5] < module_instance -> txm_module_instance_maximum_priority)
|
|
return(TX_THRESH_ERROR);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txm_module_manager_thread_create(
|
|
(TX_THREAD *) param_0,
|
|
(CHAR *) param_1,
|
|
module_instance -> txm_module_instance_shell_entry_function,
|
|
(VOID (*)(ULONG entry_input)) extra_parameters[0],
|
|
(ULONG) extra_parameters[1],
|
|
(VOID *) extra_parameters[2],
|
|
(ULONG) extra_parameters[3],
|
|
(UINT) extra_parameters[4],
|
|
(UINT) extra_parameters[5],
|
|
(ULONG) extra_parameters[6],
|
|
(UINT) extra_parameters[7],
|
|
(UINT) extra_parameters[8],
|
|
module_instance
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_thread_delete(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_delete(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_ENTRY_EXIT_NOTIFY_CALL_NOT_USED
|
|
/* UINT _txe_thread_entry_exit_notify(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
VOID (*thread_entry_exit_notify)(TX_THREAD *notify_thread_ptr, UINT type) -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_entry_exit_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_THREAD *thread_ptr = (TX_THREAD *) param_0;
|
|
TXM_MODULE_THREAD_ENTRY_INFO *thread_entry_info_ptr;
|
|
VOID (*thread_entry_exit_notify)(TX_THREAD *, UINT);
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
/* Since we need to write to the object, ensure it's valid. */
|
|
if ((thread_ptr == TX_NULL) || (thread_ptr -> tx_thread_id != TX_THREAD_ID))
|
|
return(TX_THREAD_ERROR);
|
|
|
|
/* Ensure this thread is from the module trying to set the callback. */
|
|
if (thread_ptr -> tx_thread_module_instance_ptr != module_instance)
|
|
return(TXM_MODULE_INVALID);
|
|
}
|
|
|
|
/* Is it a disable request? */
|
|
if ((void *) param_1 == TX_NULL)
|
|
{
|
|
|
|
/* Clear the callback. */
|
|
thread_entry_exit_notify = (VOID (*)(TX_THREAD *, UINT)) TX_NULL;
|
|
}
|
|
else
|
|
{
|
|
|
|
/* Setup trampoline values. */
|
|
thread_entry_info_ptr = (TXM_MODULE_THREAD_ENTRY_INFO *) thread_ptr -> tx_thread_module_entry_info_ptr;
|
|
thread_entry_info_ptr -> txm_module_thread_entry_info_exit_notify = (VOID (*)(TX_THREAD *, UINT)) param_1;
|
|
thread_entry_exit_notify = _txm_module_manager_thread_notify_trampoline;
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_entry_exit_notify(
|
|
(TX_THREAD *) param_0,
|
|
(VOID (*)(TX_THREAD *notify_thread_ptr, UINT type)) thread_entry_exit_notify
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_IDENTIFY_CALL_NOT_USED
|
|
/* TX_THREAD *_tx_thread_identify(); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_identify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_identify();
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_INFO_GET_CALL_NOT_USED
|
|
/* UINT _txe_thread_info_get(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
CHAR **name, -> param_1
|
|
UINT *state, -> extra_parameters[0]
|
|
ULONG *run_count, -> extra_parameters[1]
|
|
UINT *priority, -> extra_parameters[2]
|
|
UINT *preemption_threshold, -> extra_parameters[3]
|
|
ULONG *time_slice, -> extra_parameters[4]
|
|
TX_THREAD **next_thread, -> extra_parameters[5]
|
|
TX_THREAD **next_suspended_thread -> extra_parameters[6]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[7])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[5], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[6], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_info_get(
|
|
(TX_THREAD *) param_0,
|
|
(CHAR **) param_1,
|
|
(UINT *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(UINT *) extra_parameters[2],
|
|
(UINT *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4],
|
|
(TX_THREAD **) extra_parameters[5],
|
|
(TX_THREAD **) extra_parameters[6]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_INTERRUPT_CONTROL_CALL_NOT_USED
|
|
/* UINT _tx_thread_interrupt_control(
|
|
UINT new_posture -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_interrupt_control_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_interrupt_control(
|
|
(UINT) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_thread_performance_info_get(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
ULONG *resumptions, -> param_1
|
|
ULONG *suspensions, -> extra_parameters[0]
|
|
ULONG *solicited_preemptions, -> extra_parameters[1]
|
|
ULONG *interrupt_preemptions, -> extra_parameters[2]
|
|
ULONG *priority_inversions, -> extra_parameters[3]
|
|
ULONG *time_slices, -> extra_parameters[4]
|
|
ULONG *relinquishes, -> extra_parameters[5]
|
|
ULONG *timeouts, -> extra_parameters[6]
|
|
ULONG *wait_aborts, -> extra_parameters[7]
|
|
TX_THREAD **last_preempted_by -> extra_parameters[8]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[9])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[5], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[6], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[7], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[8], sizeof(TX_THREAD *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_performance_info_get(
|
|
(TX_THREAD *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4],
|
|
(ULONG *) extra_parameters[5],
|
|
(ULONG *) extra_parameters[6],
|
|
(ULONG *) extra_parameters[7],
|
|
(TX_THREAD **) extra_parameters[8]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_thread_performance_system_info_get(
|
|
ULONG *resumptions, -> param_0
|
|
ULONG *suspensions, -> param_1
|
|
ULONG *solicited_preemptions, -> extra_parameters[0]
|
|
ULONG *interrupt_preemptions, -> extra_parameters[1]
|
|
ULONG *priority_inversions, -> extra_parameters[2]
|
|
ULONG *time_slices, -> extra_parameters[3]
|
|
ULONG *relinquishes, -> extra_parameters[4]
|
|
ULONG *timeouts, -> extra_parameters[5]
|
|
ULONG *wait_aborts, -> extra_parameters[6]
|
|
ULONG *non_idle_returns, -> extra_parameters[7]
|
|
ULONG *idle_returns -> extra_parameters[8]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[9])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[4], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[5], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[6], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[7], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[8], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3],
|
|
(ULONG *) extra_parameters[4],
|
|
(ULONG *) extra_parameters[5],
|
|
(ULONG *) extra_parameters[6],
|
|
(ULONG *) extra_parameters[7],
|
|
(ULONG *) extra_parameters[8]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_PREEMPTION_CHANGE_CALL_NOT_USED
|
|
/* UINT _txe_thread_preemption_change(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
UINT new_threshold, -> param_1
|
|
UINT *old_threshold -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_preemption_change_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_2, sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_preemption_change(
|
|
(TX_THREAD *) param_0,
|
|
(UINT) param_1,
|
|
(UINT *) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_PRIORITY_CHANGE_CALL_NOT_USED
|
|
/* UINT _txe_thread_priority_change(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
UINT new_priority, -> param_1
|
|
UINT *old_priority -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_priority_change_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_2, sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_priority_change(
|
|
(TX_THREAD *) param_0,
|
|
(UINT) param_1,
|
|
(UINT *) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_RELINQUISH_CALL_NOT_USED
|
|
/* VOID _txe_thread_relinquish(); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_relinquish_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
_txe_thread_relinquish();
|
|
return(TX_SUCCESS);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_RESET_CALL_NOT_USED
|
|
/* UINT _txe_thread_reset(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_reset_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txm_module_manager_thread_reset(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_RESUME_CALL_NOT_USED
|
|
/* UINT _txe_thread_resume(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_resume_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_resume(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_SLEEP_CALL_NOT_USED
|
|
/* UINT _tx_thread_sleep(
|
|
ULONG timer_ticks -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_sleep_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_sleep(
|
|
(ULONG) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_STACK_ERROR_NOTIFY_CALL_NOT_USED
|
|
/* UINT _tx_thread_stack_error_notify(
|
|
VOID (*stack_error_handler)(TX_THREAD *thread_ptr) -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_stack_error_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
return_value = (ALIGN_TYPE) _tx_thread_stack_error_notify(
|
|
(VOID (*)(TX_THREAD *thread_ptr)) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_SUSPEND_CALL_NOT_USED
|
|
/* UINT _txe_thread_suspend(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_suspend_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_suspend(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_SYSTEM_SUSPEND_CALL_NOT_USED
|
|
/* VOID _tx_thread_system_suspend(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_system_suspend_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
TX_INTERRUPT_SAVE_AREA
|
|
|
|
TX_THREAD *thread_ptr;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
/* Ensure the thread is suspending itself. */
|
|
if (((TX_THREAD *) param_0) != _tx_thread_current_ptr)
|
|
{
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
/* Get the thread pointer. */
|
|
thread_ptr = (TX_THREAD *) param_0;
|
|
|
|
/* Disable interrupts temporarily. */
|
|
TX_DISABLE
|
|
|
|
/* Set the status to suspending, in order to indicate the suspension
|
|
is in progress. */
|
|
thread_ptr -> tx_thread_state = TX_COMPLETED;
|
|
|
|
/* Thread state change. */
|
|
TX_THREAD_STATE_CHANGE(thread_ptr, TX_COMPLETED)
|
|
|
|
/* Set the suspending flag. */
|
|
thread_ptr -> tx_thread_suspending = TX_TRUE;
|
|
|
|
/* Setup for no timeout period. */
|
|
thread_ptr -> tx_thread_timer.tx_timer_internal_remaining_ticks = 0;
|
|
|
|
/* Temporarily disable preemption. */
|
|
_tx_thread_preempt_disable++;
|
|
|
|
/* Restore interrupts. */
|
|
TX_RESTORE
|
|
|
|
/* Perform any additional activities for tool or user purpose. */
|
|
TX_THREAD_COMPLETED_EXTENSION(thread_ptr);
|
|
|
|
_tx_thread_system_suspend(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(TX_SUCCESS);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_TERMINATE_CALL_NOT_USED
|
|
/* UINT _txe_thread_terminate(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_terminate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_terminate(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_TIME_SLICE_CHANGE_CALL_NOT_USED
|
|
/* UINT _txe_thread_time_slice_change(
|
|
TX_THREAD *thread_ptr, -> param_0
|
|
ULONG new_time_slice, -> param_1
|
|
ULONG *old_time_slice -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_time_slice_change_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_2, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_time_slice_change(
|
|
(TX_THREAD *) param_0,
|
|
(ULONG) param_1,
|
|
(ULONG *) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_THREAD_WAIT_ABORT_CALL_NOT_USED
|
|
/* UINT _txe_thread_wait_abort(
|
|
TX_THREAD *thread_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_thread_wait_abort_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_THREAD)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_thread_wait_abort(
|
|
(TX_THREAD *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIME_GET_CALL_NOT_USED
|
|
/* ULONG _tx_time_get(); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_time_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_time_get();
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIME_SET_CALL_NOT_USED
|
|
/* VOID _tx_time_set(
|
|
ULONG new_time -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_time_set_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
_tx_time_set(
|
|
(ULONG) param_0
|
|
);
|
|
return(TX_SUCCESS);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_ACTIVATE_CALL_NOT_USED
|
|
/* UINT _txe_timer_activate(
|
|
TX_TIMER *timer_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_activate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_activate(
|
|
(TX_TIMER *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_CHANGE_CALL_NOT_USED
|
|
/* UINT _txe_timer_change(
|
|
TX_TIMER *timer_ptr, -> param_0
|
|
ULONG initial_ticks, -> param_1
|
|
ULONG reschedule_ticks -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_change_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_change(
|
|
(TX_TIMER *) param_0,
|
|
(ULONG) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_CREATE_CALL_NOT_USED
|
|
/* UINT _txe_timer_create(
|
|
TX_TIMER *timer_ptr, -> param_0
|
|
CHAR *name_ptr, -> param_1
|
|
VOID (*expiration_function)(ULONG), -> extra_parameters[0]
|
|
ULONG expiration_input, -> extra_parameters[1]
|
|
ULONG initial_ticks, -> extra_parameters[2]
|
|
ULONG reschedule_ticks, -> extra_parameters[3]
|
|
UINT auto_activate, -> extra_parameters[4]
|
|
UINT timer_control_block_size -> extra_parameters[5]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_create_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
TX_TIMER *timer_ptr;
|
|
VOID (*expiration_function)(ULONG);
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_CREATION(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[6])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
/* Is it a disable request? */
|
|
if ((void *) extra_parameters[0] == TX_NULL)
|
|
{
|
|
|
|
/* Clear the callback. */
|
|
expiration_function = (VOID (*)(ULONG)) TX_NULL;
|
|
}
|
|
else
|
|
{
|
|
|
|
/* Set trampoline callback. */
|
|
expiration_function = _txm_module_manager_timer_notify_trampoline;
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_create(
|
|
(TX_TIMER *) param_0,
|
|
(CHAR *) param_1,
|
|
(VOID (*)(ULONG)) expiration_function,
|
|
(ULONG) extra_parameters[1],
|
|
(ULONG) extra_parameters[2],
|
|
(ULONG) extra_parameters[3],
|
|
(UINT) extra_parameters[4],
|
|
(UINT) extra_parameters[5]
|
|
);
|
|
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
|
|
/* Get the object pointer. */
|
|
timer_ptr = (TX_TIMER *) param_0;
|
|
|
|
/* Setup trampoline values. */
|
|
if ((void *) extra_parameters[0] != TX_NULL)
|
|
{
|
|
|
|
timer_ptr -> tx_timer_module_instance = (VOID *) module_instance;
|
|
timer_ptr -> tx_timer_module_expiration_function = (VOID (*)(ULONG)) extra_parameters[0];
|
|
}
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_DEACTIVATE_CALL_NOT_USED
|
|
/* UINT _txe_timer_deactivate(
|
|
TX_TIMER *timer_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_deactivate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_deactivate(
|
|
(TX_TIMER *) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_DELETE_CALL_NOT_USED
|
|
/* UINT _txe_timer_delete(
|
|
TX_TIMER *timer_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_delete_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_delete(
|
|
(TX_TIMER *) param_0
|
|
);
|
|
|
|
/* Deallocate object memory. */
|
|
if (return_value == TX_SUCCESS)
|
|
{
|
|
return_value = _txm_module_manager_object_deallocate((VOID *) param_0);
|
|
}
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_INFO_GET_CALL_NOT_USED
|
|
/* UINT _txe_timer_info_get(
|
|
TX_TIMER *timer_ptr, -> param_0
|
|
CHAR **name, -> param_1
|
|
UINT *active, -> extra_parameters[0]
|
|
ULONG *remaining_ticks, -> extra_parameters[1]
|
|
ULONG *reschedule_ticks, -> extra_parameters[2]
|
|
TX_TIMER **next_timer -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(CHAR *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(UINT)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(TX_TIMER *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txe_timer_info_get(
|
|
(TX_TIMER *) param_0,
|
|
(CHAR **) param_1,
|
|
(UINT *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(TX_TIMER **) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_PERFORMANCE_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_timer_performance_info_get(
|
|
TX_TIMER *timer_ptr, -> param_0
|
|
ULONG *activates, -> param_1
|
|
ULONG *reactivates, -> extra_parameters[0]
|
|
ULONG *deactivates, -> extra_parameters[1]
|
|
ULONG *expirations, -> extra_parameters[2]
|
|
ULONG *expiration_adjusts -> extra_parameters[3]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_performance_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_OBJECT_FOR_USE(module_instance, param_0, sizeof(TX_TIMER)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[4])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[3], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_timer_performance_info_get(
|
|
(TX_TIMER *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2],
|
|
(ULONG *) extra_parameters[3]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TIMER_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
|
|
/* UINT _tx_timer_performance_system_info_get(
|
|
ULONG *activates, -> param_0
|
|
ULONG *reactivates, -> param_1
|
|
ULONG *deactivates, -> extra_parameters[0]
|
|
ULONG *expirations, -> extra_parameters[1]
|
|
ULONG *expiration_adjusts -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_timer_performance_system_info_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_1, sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[0], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[2], sizeof(ULONG)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_timer_performance_system_info_get(
|
|
(ULONG *) param_0,
|
|
(ULONG *) param_1,
|
|
(ULONG *) extra_parameters[0],
|
|
(ULONG *) extra_parameters[1],
|
|
(ULONG *) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_BUFFER_FULL_NOTIFY_CALL_NOT_USED
|
|
/* UINT _tx_trace_buffer_full_notify(
|
|
VOID (*full_buffer_callback)(VOID *buffer) -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_buffer_full_notify_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_buffer_full_notify(
|
|
(VOID (*)(VOID *buffer)) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_DISABLE_CALL_NOT_USED
|
|
/* UINT _tx_trace_disable(); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_disable_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_disable();
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_ENABLE_CALL_NOT_USED
|
|
/* UINT _tx_trace_enable(
|
|
VOID *trace_buffer_start, -> param_0
|
|
ULONG trace_buffer_size, -> param_1
|
|
ULONG registry_entries -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_enable_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_enable(
|
|
(VOID *) param_0,
|
|
(ULONG) param_1,
|
|
(ULONG) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_EVENT_FILTER_CALL_NOT_USED
|
|
/* UINT _tx_trace_event_filter(
|
|
ULONG event_filter_bits -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_event_filter_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_event_filter(
|
|
(ULONG) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_EVENT_UNFILTER_CALL_NOT_USED
|
|
/* UINT _tx_trace_event_unfilter(
|
|
ULONG event_unfilter_bits -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_event_unfilter_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_event_unfilter(
|
|
(ULONG) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_INTERRUPT_CONTROL_CALL_NOT_USED
|
|
/* UINT _tx_trace_interrupt_control(
|
|
UINT new_posture -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_interrupt_control_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_interrupt_control(
|
|
(UINT) param_0
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_ISR_ENTER_INSERT_CALL_NOT_USED
|
|
/* VOID _tx_trace_isr_enter_insert(
|
|
ULONG isr_id -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_isr_enter_insert_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
_tx_trace_isr_enter_insert(
|
|
(ULONG) param_0
|
|
);
|
|
return(TX_SUCCESS);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_ISR_EXIT_INSERT_CALL_NOT_USED
|
|
/* VOID _tx_trace_isr_exit_insert(
|
|
ULONG isr_id -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_isr_exit_insert_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_USER_MODE)
|
|
return(TXM_MODULE_INVALID_PROPERTIES);
|
|
|
|
_tx_trace_isr_exit_insert(
|
|
(ULONG) param_0
|
|
);
|
|
return(TX_SUCCESS);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_TRACE_USER_EVENT_INSERT_CALL_NOT_USED
|
|
/* UINT _tx_trace_user_event_insert(
|
|
ULONG event_id, -> param_0
|
|
ULONG info_field_1, -> param_1
|
|
ULONG info_field_2, -> extra_parameters[0]
|
|
ULONG info_field_3, -> extra_parameters[1]
|
|
ULONG info_field_4 -> extra_parameters[2]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_tx_trace_user_event_insert_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[3])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _tx_trace_user_event_insert(
|
|
(ULONG) param_0,
|
|
(ULONG) param_1,
|
|
(ULONG) extra_parameters[0],
|
|
(ULONG) extra_parameters[1],
|
|
(ULONG) extra_parameters[2]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MODULE_OBJECT_ALLOCATE_CALL_NOT_USED
|
|
/* UINT _txm_module_object_allocate(
|
|
VOID **object_ptr, -> param_0
|
|
ULONG object_size -> param_1
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_txm_module_object_allocate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_0, sizeof(VOID *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txm_module_manager_object_allocate(
|
|
(VOID **) param_0,
|
|
(ULONG) param_1,
|
|
module_instance
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MODULE_OBJECT_DEALLOCATE_CALL_NOT_USED
|
|
/* UINT _txm_module_object_deallocate(
|
|
VOID *object_ptr -> param_0
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_txm_module_object_deallocate_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0)
|
|
{
|
|
|
|
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
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MODULE_OBJECT_POINTER_GET_CALL_NOT_USED
|
|
/* UINT _txm_module_object_pointer_get(
|
|
UINT object_type, -> param_0
|
|
CHAR *name, -> param_1
|
|
VOID **object_ptr -> param_2
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_txm_module_object_pointer_get_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, param_2, sizeof(VOID *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txm_module_manager_object_pointer_get(
|
|
(UINT) param_0,
|
|
(CHAR *) param_1,
|
|
(VOID **) param_2
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|
|
|
|
#ifndef TXM_MODULE_OBJECT_POINTER_GET_EXTENDED_CALL_NOT_USED
|
|
/* UINT _txm_module_object_pointer_get_extended(
|
|
UINT object_type, -> param_0
|
|
CHAR *name, -> param_1
|
|
UINT name_length, -> extra_parameters[0]
|
|
VOID **object_ptr -> extra_parameters[1]
|
|
); */
|
|
static ALIGN_TYPE _txm_module_manager_txm_module_object_pointer_get_extended_dispatch(TXM_MODULE_INSTANCE *module_instance, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE *extra_parameters)
|
|
{
|
|
|
|
ALIGN_TYPE return_value;
|
|
|
|
if (module_instance -> txm_module_instance_property_flags & TXM_MODULE_MEMORY_PROTECTION)
|
|
{
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_DEREFERENCE_STRING(module_instance, param_1))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_ENSURE_INSIDE_MODULE_DATA(module_instance, (ALIGN_TYPE)extra_parameters, sizeof(ALIGN_TYPE[2])))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
|
|
if (!TXM_MODULE_MANAGER_PARAM_CHECK_BUFFER_WRITE(module_instance, extra_parameters[1], sizeof(VOID *)))
|
|
return(TXM_MODULE_INVALID_MEMORY);
|
|
}
|
|
|
|
return_value = (ALIGN_TYPE) _txm_module_manager_object_pointer_get_extended(
|
|
(UINT) param_0,
|
|
(CHAR *) param_1,
|
|
(UINT) extra_parameters[0],
|
|
(VOID **) extra_parameters[1]
|
|
);
|
|
return(return_value);
|
|
}
|
|
#endif
|