1
10
13
14
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
140
141
142
143
144
145
146
147
148
149
150
151
152
153
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
...
...
...
#define TX_SOURCE_CODE
#include "tx_api.h"
#include "tx_queue.h"
#include "tx_thread.h"
#include "txm_module.h"
...
...
VOID _txm_module_manager_callback_request(TX_QUEUE *module_callback_queue, TXM_MODULE_CALLBACK_MESSAGE *callback_message)
{
TX_INTERRUPT_SAVE_AREA
TXM_MODULE_CALLBACK_MESSAGE *queued_message;
UINT enqueued;
UINT found;
UINT status;
TX_DISABLE
if ((module_callback_queue) && (module_callback_queue -> tx_queue_id == TX_QUEUE_ID))
{
queued_message = (TXM_MODULE_CALLBACK_MESSAGE *) module_callback_queue -> tx_queue_read;
enqueued = module_callback_queue -> tx_queue_enqueued;
found = TX_FALSE;
while (enqueued != 0)
{
if ((queued_message -> txm_module_callback_message_application_function == callback_message -> txm_module_callback_message_application_function) &&
(queued_message -> txm_module_callback_message_param_1 == callback_message -> txm_module_callback_message_param_1) &&
(queued_message -> txm_module_callback_message_param_2 == callback_message -> txm_module_callback_message_param_2) &&
(queued_message -> txm_module_callback_message_param_3 == callback_message -> txm_module_callback_message_param_3) &&
(queued_message -> txm_module_callback_message_param_4 == callback_message -> txm_module_callback_message_param_4) &&
(queued_message -> txm_module_callback_message_param_5 == callback_message -> txm_module_callback_message_param_5) &&
(queued_message -> txm_module_callback_message_param_6 == callback_message -> txm_module_callback_message_param_6) &&
(queued_message -> txm_module_callback_message_param_7 == callback_message -> txm_module_callback_message_param_7) &&
(queued_message -> txm_module_callback_message_param_8 == callback_message -> txm_module_callback_message_param_8) &&
(queued_message -> txm_module_callback_message_reserved1 == callback_message -> txm_module_callback_message_reserved1) &&
(queued_message -> txm_module_callback_message_reserved2 == callback_message -> txm_module_callback_message_reserved2))
{
queued_message -> txm_module_callback_message_activation_count++;
found = TX_TRUE;
break;
}if ((queued_message -> txm_module_callback_message_application_function == callback_message -> txm_module_callback_message_application_function) && (queued_message -> txm_module_callback_message_param_1 == callback_message -> txm_module_callback_message_param_1) && (queued_message -> txm_module_callback_message_param_2 == callback_message -> txm_module_callback_message_param_2) && (queued_message -> txm_module_callback_message_param_3 == callback_message -> txm_module_callback_message_param_3) && (queued_message -> txm_module_callback_message_param_4 == callback_message -> txm_module_callback_message_param_4) && (queued_message -> txm_module_callback_message_param_5 == callback_message -> txm_module_callback_message_param_5) && (queued_message -> txm_module_callback_message_param_6 == callback_message -> txm_module_callback_message_param_6) && (queued_message -> txm_module_callback_message_param_7 == callback_message -> txm_module_callback_message_param_7) && (queued_message -> txm_module_callback_message_param_8 == callback_message -> txm_module_callback_message_param_8) && (queued_message -> txm_module_callback_message_reserved1 == callback_message -> txm_module_callback_message_reserved1) && (queued_message -> txm_module_callback_message_reserved2 == callback_message -> txm_module_callback_message_reserved2)) { ... }
enqueued--;
queued_message++;
if (((ULONG *) queued_message) >= module_callback_queue -> tx_queue_end)
{
queued_message = (TXM_MODULE_CALLBACK_MESSAGE *) module_callback_queue -> tx_queue_start;
}if (((ULONG *) queued_message) >= module_callback_queue -> tx_queue_end) { ... }
}while (enqueued != 0) { ... }
TX_RESTORE
if (found == TX_FALSE)
{
status = _tx_queue_send(module_callback_queue, (VOID *) callback_message, TX_NO_WAIT);
if (status != TX_SUCCESS)
{
_txm_module_manager_callback_error_count++;
}if (status != TX_SUCCESS) { ... }
}if (found == TX_FALSE) { ... }
_txm_module_manager_callback_total_count++;
}if ((module_callback_queue) && (module_callback_queue -> tx_queue_id == TX_QUEUE_ID)) { ... }
else
{
_txm_module_manager_callback_error_count++;
TX_RESTORE
}else { ... }
}{ ... }