blob: fa5ebe85c3d6f826c53a2570a1dc640be881b8c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/***************************************************************************
* Copyright (c) 2024 Microsoft Corporation
* Copyright (c) 2026-present Eclipse ThreadX contributors
*
* This program and the accompanying materials are made available under the
* terms of the MIT License which is available at
* https://opensource.org/licenses/MIT.
*
* SPDX-License-Identifier: MIT
**************************************************************************/
// Portions of this file were generated with AI assistance.
/**************************************************************************/
/**************************************************************************/
/** */
/** ThreadX Component */
/** */
/** Module */
/** */
/**************************************************************************/
/**************************************************************************/
#define TXM_MODULE
#include "txm_module.h"
#ifndef TXM_MODULE_OBJECT_DEALLOCATE_CALL_NOT_USED
/* DEPRECATION NOTICE
* txm_module_object_deallocate() is deprecated and must not be used in new
* code. It is retained only for backward-compatibility with existing modules.
*
* WHY: when a module calls tx_timer_delete(), tx_semaphore_delete(), or any
* other tx_*_delete() service, the Module Manager dispatch layer automatically
* releases the associated object pool memory after the kernel cleanup
* completes. No separate deallocation call is required or expected.
*
* WHAT TO DO: remove any call to txm_module_object_deallocate() from your
* module. The corresponding tx_*_delete() call already handles everything.
*
* BEHAVIOUR: calling txm_module_object_deallocate() on a live kernel object
* (one whose tx_*_delete() has not yet been called) returns TX_DELETE_ERROR
* and changes nothing. The Module Manager will not release the memory of a
* created object, because the kernel goes on using those bytes as a control
* block after the byte pool has handed them to somebody else. Storage that
* was allocated but never made into an object is still released, so cleaning
* up after a create that failed or was abandoned still works.
*/
#pragma message("txm_module_object_deallocate() is deprecated and must not be used. " \
"Call tx_*_delete() instead; the Module Manager dispatch layer " \
"releases pool memory automatically on success. Deallocating a " \
"live kernel object returns TX_DELETE_ERROR.")
/**************************************************************************/
/* */
/* FUNCTION RELEASE */
/* */
/* _txm_module_manager_object_deallocate PORTABLE C */
/* 6.1.10 */
/* AUTHOR */
/* */
/* Scott Larson, Microsoft Corporation */
/* */
/* DESCRIPTION */
/* */
/* This function deallocates a previously allocated object. */
/* */
/* INPUT */
/* */
/* object_ptr Object pointer to deallocate */
/* */
/* OUTPUT */
/* */
/* status Completion status, TX_DELETE_ERROR*/
/* if a live object is there */
/* */
/* CALLS */
/* */
/* _txm_module_kernel_call_dispatcher */
/* */
/* CALLED BY */
/* */
/* Module application code */
/* */
/**************************************************************************/
UINT _txm_module_object_deallocate(VOID *object_ptr)
{
UINT return_value;
/* Call module manager dispatcher. */
return_value = (UINT) (_txm_module_kernel_call_dispatcher)(TXM_MODULE_OBJECT_DEALLOCATE_CALL, (ALIGN_TYPE) object_ptr, 0, 0);
/* Return value to the caller. */
return(return_value);
}
#endif
|