1 /***************************************************************************
2  * Copyright (c) 2024 Microsoft Corporation
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the MIT License which is available at
6  * https://opensource.org/licenses/MIT.
7  *
8  * SPDX-License-Identifier: MIT
9  **************************************************************************/
10 
11 
12 /**************************************************************************/
13 /**************************************************************************/
14 /**                                                                       */
15 /** ThreadX Component                                                     */
16 /**                                                                       */
17 /**   Module Manager                                                      */
18 /**                                                                       */
19 /**************************************************************************/
20 /**************************************************************************/
21 
22 #define TX_SOURCE_CODE
23 
24 #include "tx_api.h"
25 #include "tx_block_pool.h"
26 #include "tx_byte_pool.h"
27 #include "tx_event_flags.h"
28 #include "tx_queue.h"
29 #include "tx_mutex.h"
30 #include "tx_semaphore.h"
31 #include "tx_thread.h"
32 #include "tx_timer.h"
33 #include "tx_trace.h"
34 #include "txm_module.h"
35 #include "txm_module_manager_util.h"
36 #include "txm_module_manager_dispatch.h"
37 
38 /**************************************************************************/
39 /*                                                                        */
40 /*  FUNCTION                                               RELEASE        */
41 /*                                                                        */
42 /*    _txm_module_manager_kernel_dispatch                 PORTABLE C      */
43 /*                                                           6.1.10       */
44 /*  AUTHOR                                                                */
45 /*                                                                        */
46 /*    Scott Larson, Microsoft Corporation                                 */
47 /*                                                                        */
48 /*  DESCRIPTION                                                           */
49 /*                                                                        */
50 /*    This function dispatches the module's kernel request based upon the */
51 /*    ID and parameters specified in the request.                         */
52 /*    To disallow modules to use specific ThreadX services, define        */
53 /*    TXM_***_CALL_NOT_USED (see #ifndefs surrounding each case).         */
54 /*                                                                        */
55 /*  INPUT                                                                 */
56 /*                                                                        */
57 /*    kernel_request                    Module's kernel request           */
58 /*    param_1                           First parameter                   */
59 /*    param_2                           Second parameter                  */
60 /*    param_3                           Third parameter                   */
61 /*                                                                        */
62 /*  OUTPUT                                                                */
63 /*                                                                        */
64 /*    status                            Completion status                 */
65 /*                                                                        */
66 /*  CALLS                                                                 */
67 /*                                                                        */
68 /*    _txm_module_manager_application_request   Application-specific req  */
69 /*    _txm_module_manager_object_pointer_get    Find object pointer       */
70 /*    _txm_module_manager_thread_create         Module thread create      */
71 /*    [_txm_module_manager_*_dispatch]          Optional external         */
72 /*                                                component dispatch      */
73 /*    ThreadX API Calls                                                   */
74 /*                                                                        */
75 /*  CALLED BY                                                             */
76 /*                                                                        */
77 /*    Application code                                                    */
78 /*                                                                        */
79 /*  RELEASE HISTORY                                                       */
80 /*                                                                        */
81 /*    DATE              NAME                      DESCRIPTION             */
82 /*                                                                        */
83 /*  09-30-2020      Scott Larson            Initial Version 6.1           */
84 /*  12-31-2020      Scott Larson            Modified comment(s), added    */
85 /*                                            port-specific dispatch,     */
86 /*                                            resulting in version 6.1.3  */
87 /*  04-02-2021      Scott Larson            Modified comment(s),          */
88 /*                                            added optional defines to   */
89 /*                                            remove unneeded functions,  */
90 /*                                            resulting in version 6.1.6  */
91 /*  01-31-2022      Scott Larson            Modified comments and added   */
92 /*                                            CALL_NOT_USED option,       */
93 /*                                            resulting in version 6.1.10 */
94 /*                                                                        */
95 /**************************************************************************/
_txm_module_manager_kernel_dispatch(ULONG kernel_request,ALIGN_TYPE param_0,ALIGN_TYPE param_1,ALIGN_TYPE param_2)96 ALIGN_TYPE _txm_module_manager_kernel_dispatch(ULONG kernel_request, ALIGN_TYPE param_0, ALIGN_TYPE param_1, ALIGN_TYPE param_2)
97 {
98 
99 ALIGN_TYPE return_value = TX_NOT_AVAILABLE;
100 TXM_MODULE_INSTANCE *module_instance;
101 
102 
103     /* Get the module instance.  */
104     module_instance = _tx_thread_current_ptr -> tx_thread_module_instance_ptr;
105 
106     /* Sanity-check for a valid module instance.  */
107     if (module_instance == TX_NULL)
108     {
109         /* Just return!  */
110         return(TXM_MODULE_INVALID);
111     }
112 
113     switch (kernel_request)
114     {
115     #ifndef TXM_BLOCK_ALLOCATE_CALL_NOT_USED
116     case TXM_BLOCK_ALLOCATE_CALL:
117     {
118         return_value = _txm_module_manager_tx_block_allocate_dispatch(module_instance, param_0, param_1, param_2);
119         break;
120     }
121     #endif
122 
123     #ifndef TXM_BLOCK_POOL_CREATE_CALL_NOT_USED
124     case TXM_BLOCK_POOL_CREATE_CALL:
125     {
126         return_value = _txm_module_manager_tx_block_pool_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
127         break;
128     }
129     #endif
130 
131     #ifndef TXM_BLOCK_POOL_DELETE_CALL_NOT_USED
132     case TXM_BLOCK_POOL_DELETE_CALL:
133     {
134         return_value = _txm_module_manager_tx_block_pool_delete_dispatch(module_instance, param_0);
135         break;
136     }
137     #endif
138 
139     #ifndef TXM_BLOCK_POOL_INFO_GET_CALL_NOT_USED
140     case TXM_BLOCK_POOL_INFO_GET_CALL:
141     {
142         return_value = _txm_module_manager_tx_block_pool_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
143         break;
144     }
145     #endif
146 
147     #ifndef TXM_BLOCK_POOL_PERFORMANCE_INFO_GET_CALL_NOT_USED
148     case TXM_BLOCK_POOL_PERFORMANCE_INFO_GET_CALL:
149     {
150         return_value = _txm_module_manager_tx_block_pool_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
151         break;
152     }
153     #endif
154 
155     #ifndef TXM_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
156     case TXM_BLOCK_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL:
157     {
158         return_value = _txm_module_manager_tx_block_pool_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
159         break;
160     }
161     #endif
162 
163     #ifndef TXM_BLOCK_POOL_PRIORITIZE_CALL_NOT_USED
164     case TXM_BLOCK_POOL_PRIORITIZE_CALL:
165     {
166         return_value = _txm_module_manager_tx_block_pool_prioritize_dispatch(module_instance, param_0);
167         break;
168     }
169     #endif
170 
171     #ifndef TXM_BLOCK_RELEASE_CALL_NOT_USED
172     case TXM_BLOCK_RELEASE_CALL:
173     {
174         return_value = _txm_module_manager_tx_block_release_dispatch(module_instance, param_0);
175         break;
176     }
177     #endif
178 
179     #ifndef TXM_BYTE_ALLOCATE_CALL_NOT_USED
180     case TXM_BYTE_ALLOCATE_CALL:
181     {
182         return_value = _txm_module_manager_tx_byte_allocate_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
183         break;
184     }
185     #endif
186 
187     #ifndef TXM_BYTE_POOL_CREATE_CALL_NOT_USED
188     case TXM_BYTE_POOL_CREATE_CALL:
189     {
190         return_value = _txm_module_manager_tx_byte_pool_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
191         break;
192     }
193     #endif
194 
195     #ifndef TXM_BYTE_POOL_DELETE_CALL_NOT_USED
196     case TXM_BYTE_POOL_DELETE_CALL:
197     {
198         return_value = _txm_module_manager_tx_byte_pool_delete_dispatch(module_instance, param_0);
199         break;
200     }
201     #endif
202 
203     #ifndef TXM_BYTE_POOL_INFO_GET_CALL_NOT_USED
204     case TXM_BYTE_POOL_INFO_GET_CALL:
205     {
206         return_value = _txm_module_manager_tx_byte_pool_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
207         break;
208     }
209     #endif
210 
211     #ifndef TXM_BYTE_POOL_PERFORMANCE_INFO_GET_CALL_NOT_USED
212     case TXM_BYTE_POOL_PERFORMANCE_INFO_GET_CALL:
213     {
214         return_value = _txm_module_manager_tx_byte_pool_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
215         break;
216     }
217     #endif
218 
219     #ifndef TXM_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
220     case TXM_BYTE_POOL_PERFORMANCE_SYSTEM_INFO_GET_CALL:
221     {
222         return_value = _txm_module_manager_tx_byte_pool_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
223         break;
224     }
225     #endif
226 
227     #ifndef TXM_BYTE_POOL_PRIORITIZE_CALL_NOT_USED
228     case TXM_BYTE_POOL_PRIORITIZE_CALL:
229     {
230         return_value = _txm_module_manager_tx_byte_pool_prioritize_dispatch(module_instance, param_0);
231         break;
232     }
233     #endif
234 
235     #ifndef TXM_BYTE_RELEASE_CALL_NOT_USED
236     case TXM_BYTE_RELEASE_CALL:
237     {
238         return_value = _txm_module_manager_tx_byte_release_dispatch(module_instance, param_0);
239         break;
240     }
241     #endif
242 
243     #ifndef TXM_EVENT_FLAGS_CREATE_CALL_NOT_USED
244     case TXM_EVENT_FLAGS_CREATE_CALL:
245     {
246         return_value = _txm_module_manager_tx_event_flags_create_dispatch(module_instance, param_0, param_1, param_2);
247         break;
248     }
249     #endif
250 
251     #ifndef TXM_EVENT_FLAGS_DELETE_CALL_NOT_USED
252     case TXM_EVENT_FLAGS_DELETE_CALL:
253     {
254         return_value = _txm_module_manager_tx_event_flags_delete_dispatch(module_instance, param_0);
255         break;
256     }
257     #endif
258 
259     #ifndef TXM_EVENT_FLAGS_GET_CALL_NOT_USED
260     case TXM_EVENT_FLAGS_GET_CALL:
261     {
262         return_value = _txm_module_manager_tx_event_flags_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
263         break;
264     }
265     #endif
266 
267     #ifndef TXM_EVENT_FLAGS_INFO_GET_CALL_NOT_USED
268     case TXM_EVENT_FLAGS_INFO_GET_CALL:
269     {
270         return_value = _txm_module_manager_tx_event_flags_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
271         break;
272     }
273     #endif
274 
275     #ifndef TXM_EVENT_FLAGS_PERFORMANCE_INFO_GET_CALL_NOT_USED
276     case TXM_EVENT_FLAGS_PERFORMANCE_INFO_GET_CALL:
277     {
278         return_value = _txm_module_manager_tx_event_flags_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
279         break;
280     }
281     #endif
282 
283     #ifndef TXM_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
284     case TXM_EVENT_FLAGS_PERFORMANCE_SYSTEM_INFO_GET_CALL:
285     {
286         return_value = _txm_module_manager_tx_event_flags_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
287         break;
288     }
289     #endif
290 
291     #ifndef TXM_EVENT_FLAGS_SET_CALL_NOT_USED
292     case TXM_EVENT_FLAGS_SET_CALL:
293     {
294         return_value = _txm_module_manager_tx_event_flags_set_dispatch(module_instance, param_0, param_1, param_2);
295         break;
296     }
297     #endif
298 
299     #ifndef TXM_EVENT_FLAGS_SET_NOTIFY_CALL_NOT_USED
300     case TXM_EVENT_FLAGS_SET_NOTIFY_CALL:
301     {
302         return_value = _txm_module_manager_tx_event_flags_set_notify_dispatch(module_instance, param_0, param_1);
303         break;
304     }
305     #endif
306 
307     #ifndef TXM_MUTEX_CREATE_CALL_NOT_USED
308     case TXM_MUTEX_CREATE_CALL:
309     {
310         return_value = _txm_module_manager_tx_mutex_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
311         break;
312     }
313     #endif
314 
315     #ifndef TXM_MUTEX_DELETE_CALL_NOT_USED
316     case TXM_MUTEX_DELETE_CALL:
317     {
318         return_value = _txm_module_manager_tx_mutex_delete_dispatch(module_instance, param_0);
319         break;
320     }
321     #endif
322 
323     #ifndef TXM_MUTEX_GET_CALL_NOT_USED
324     case TXM_MUTEX_GET_CALL:
325     {
326         return_value = _txm_module_manager_tx_mutex_get_dispatch(module_instance, param_0, param_1);
327         break;
328     }
329     #endif
330 
331     #ifndef TXM_MUTEX_INFO_GET_CALL_NOT_USED
332     case TXM_MUTEX_INFO_GET_CALL:
333     {
334         return_value = _txm_module_manager_tx_mutex_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
335         break;
336     }
337     #endif
338 
339     #ifndef TXM_MUTEX_PERFORMANCE_INFO_GET_CALL_NOT_USED
340     case TXM_MUTEX_PERFORMANCE_INFO_GET_CALL:
341     {
342         return_value = _txm_module_manager_tx_mutex_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
343         break;
344     }
345     #endif
346 
347     #ifndef TXM_MUTEX_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
348     case TXM_MUTEX_PERFORMANCE_SYSTEM_INFO_GET_CALL:
349     {
350         return_value = _txm_module_manager_tx_mutex_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
351         break;
352     }
353     #endif
354 
355     #ifndef TXM_MUTEX_PRIORITIZE_CALL_NOT_USED
356     case TXM_MUTEX_PRIORITIZE_CALL:
357     {
358         return_value = _txm_module_manager_tx_mutex_prioritize_dispatch(module_instance, param_0);
359         break;
360     }
361     #endif
362 
363     #ifndef TXM_MUTEX_PUT_CALL_NOT_USED
364     case TXM_MUTEX_PUT_CALL:
365     {
366         return_value = _txm_module_manager_tx_mutex_put_dispatch(module_instance, param_0);
367         break;
368     }
369     #endif
370 
371     #ifndef TXM_QUEUE_CREATE_CALL_NOT_USED
372     case TXM_QUEUE_CREATE_CALL:
373     {
374         return_value = _txm_module_manager_tx_queue_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
375         break;
376     }
377     #endif
378 
379     #ifndef TXM_QUEUE_DELETE_CALL_NOT_USED
380     case TXM_QUEUE_DELETE_CALL:
381     {
382         return_value = _txm_module_manager_tx_queue_delete_dispatch(module_instance, param_0);
383         break;
384     }
385     #endif
386 
387     #ifndef TXM_QUEUE_FLUSH_CALL_NOT_USED
388     case TXM_QUEUE_FLUSH_CALL:
389     {
390         return_value = _txm_module_manager_tx_queue_flush_dispatch(module_instance, param_0);
391         break;
392     }
393     #endif
394 
395     #ifndef TXM_QUEUE_FRONT_SEND_CALL_NOT_USED
396     case TXM_QUEUE_FRONT_SEND_CALL:
397     {
398         return_value = _txm_module_manager_tx_queue_front_send_dispatch(module_instance, param_0, param_1, param_2);
399         break;
400     }
401     #endif
402 
403     #ifndef TXM_QUEUE_INFO_GET_CALL_NOT_USED
404     case TXM_QUEUE_INFO_GET_CALL:
405     {
406         return_value = _txm_module_manager_tx_queue_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
407         break;
408     }
409     #endif
410 
411     #ifndef TXM_QUEUE_PERFORMANCE_INFO_GET_CALL_NOT_USED
412     case TXM_QUEUE_PERFORMANCE_INFO_GET_CALL:
413     {
414         return_value = _txm_module_manager_tx_queue_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
415         break;
416     }
417     #endif
418 
419     #ifndef TXM_QUEUE_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
420     case TXM_QUEUE_PERFORMANCE_SYSTEM_INFO_GET_CALL:
421     {
422         return_value = _txm_module_manager_tx_queue_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
423         break;
424     }
425     #endif
426 
427     #ifndef TXM_QUEUE_PRIORITIZE_CALL_NOT_USED
428     case TXM_QUEUE_PRIORITIZE_CALL:
429     {
430         return_value = _txm_module_manager_tx_queue_prioritize_dispatch(module_instance, param_0);
431         break;
432     }
433     #endif
434 
435     #ifndef TXM_QUEUE_RECEIVE_CALL_NOT_USED
436     case TXM_QUEUE_RECEIVE_CALL:
437     {
438         return_value = _txm_module_manager_tx_queue_receive_dispatch(module_instance, param_0, param_1, param_2);
439         break;
440     }
441     #endif
442 
443     #ifndef TXM_QUEUE_SEND_CALL_NOT_USED
444     case TXM_QUEUE_SEND_CALL:
445     {
446         return_value = _txm_module_manager_tx_queue_send_dispatch(module_instance, param_0, param_1, param_2);
447         break;
448     }
449     #endif
450 
451     #ifndef TXM_QUEUE_SEND_NOTIFY_CALL_NOT_USED
452     case TXM_QUEUE_SEND_NOTIFY_CALL:
453     {
454         return_value = _txm_module_manager_tx_queue_send_notify_dispatch(module_instance, param_0, param_1);
455         break;
456     }
457     #endif
458 
459     #ifndef TXM_SEMAPHORE_CEILING_PUT_CALL_NOT_USED
460     case TXM_SEMAPHORE_CEILING_PUT_CALL:
461     {
462         return_value = _txm_module_manager_tx_semaphore_ceiling_put_dispatch(module_instance, param_0, param_1);
463         break;
464     }
465     #endif
466 
467     #ifndef TXM_SEMAPHORE_CREATE_CALL_NOT_USED
468     case TXM_SEMAPHORE_CREATE_CALL:
469     {
470         return_value = _txm_module_manager_tx_semaphore_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
471         break;
472     }
473     #endif
474 
475     #ifndef TXM_SEMAPHORE_DELETE_CALL_NOT_USED
476     case TXM_SEMAPHORE_DELETE_CALL:
477     {
478         return_value = _txm_module_manager_tx_semaphore_delete_dispatch(module_instance, param_0);
479         break;
480     }
481     #endif
482 
483     #ifndef TXM_SEMAPHORE_GET_CALL_NOT_USED
484     case TXM_SEMAPHORE_GET_CALL:
485     {
486         return_value = _txm_module_manager_tx_semaphore_get_dispatch(module_instance, param_0, param_1);
487         break;
488     }
489     #endif
490 
491     #ifndef TXM_SEMAPHORE_INFO_GET_CALL_NOT_USED
492     case TXM_SEMAPHORE_INFO_GET_CALL:
493     {
494         return_value = _txm_module_manager_tx_semaphore_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
495         break;
496     }
497     #endif
498 
499     #ifndef TXM_SEMAPHORE_PERFORMANCE_INFO_GET_CALL_NOT_USED
500     case TXM_SEMAPHORE_PERFORMANCE_INFO_GET_CALL:
501     {
502         return_value = _txm_module_manager_tx_semaphore_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
503         break;
504     }
505     #endif
506 
507     #ifndef TXM_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
508     case TXM_SEMAPHORE_PERFORMANCE_SYSTEM_INFO_GET_CALL:
509     {
510         return_value = _txm_module_manager_tx_semaphore_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
511         break;
512     }
513     #endif
514 
515     #ifndef TXM_SEMAPHORE_PRIORITIZE_CALL_NOT_USED
516     case TXM_SEMAPHORE_PRIORITIZE_CALL:
517     {
518         return_value = _txm_module_manager_tx_semaphore_prioritize_dispatch(module_instance, param_0);
519         break;
520     }
521     #endif
522 
523     #ifndef TXM_SEMAPHORE_PUT_CALL_NOT_USED
524     case TXM_SEMAPHORE_PUT_CALL:
525     {
526         return_value = _txm_module_manager_tx_semaphore_put_dispatch(module_instance, param_0);
527         break;
528     }
529     #endif
530 
531     #ifndef TXM_SEMAPHORE_PUT_NOTIFY_CALL_NOT_USED
532     case TXM_SEMAPHORE_PUT_NOTIFY_CALL:
533     {
534         return_value = _txm_module_manager_tx_semaphore_put_notify_dispatch(module_instance, param_0, param_1);
535         break;
536     }
537     #endif
538 
539     #ifndef TXM_THREAD_CREATE_CALL_NOT_USED
540     case TXM_THREAD_CREATE_CALL:
541     {
542         return_value = _txm_module_manager_tx_thread_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
543         break;
544     }
545     #endif
546 
547     #ifndef TXM_THREAD_DELETE_CALL_NOT_USED
548     case TXM_THREAD_DELETE_CALL:
549     {
550         return_value = _txm_module_manager_tx_thread_delete_dispatch(module_instance, param_0);
551         break;
552     }
553     #endif
554 
555     #ifndef TXM_THREAD_ENTRY_EXIT_NOTIFY_CALL_NOT_USED
556     case TXM_THREAD_ENTRY_EXIT_NOTIFY_CALL:
557     {
558         return_value = _txm_module_manager_tx_thread_entry_exit_notify_dispatch(module_instance, param_0, param_1);
559         break;
560     }
561     #endif
562 
563     #ifndef TXM_THREAD_IDENTIFY_CALL_NOT_USED
564     case TXM_THREAD_IDENTIFY_CALL:
565     {
566         return_value = _txm_module_manager_tx_thread_identify_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
567         break;
568     }
569     #endif
570 
571     #ifndef TXM_THREAD_INFO_GET_CALL_NOT_USED
572     case TXM_THREAD_INFO_GET_CALL:
573     {
574         return_value = _txm_module_manager_tx_thread_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
575         break;
576     }
577     #endif
578 
579     #ifndef TXM_THREAD_INTERRUPT_CONTROL_CALL_NOT_USED
580     case TXM_THREAD_INTERRUPT_CONTROL_CALL:
581     {
582         return_value = _txm_module_manager_tx_thread_interrupt_control_dispatch(module_instance, param_0);
583         break;
584     }
585     #endif
586 
587     #ifndef TXM_THREAD_PERFORMANCE_INFO_GET_CALL_NOT_USED
588     case TXM_THREAD_PERFORMANCE_INFO_GET_CALL:
589     {
590         return_value = _txm_module_manager_tx_thread_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
591         break;
592     }
593     #endif
594 
595     #ifndef TXM_THREAD_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
596     case TXM_THREAD_PERFORMANCE_SYSTEM_INFO_GET_CALL:
597     {
598         return_value = _txm_module_manager_tx_thread_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
599         break;
600     }
601     #endif
602 
603     #ifndef TXM_THREAD_PREEMPTION_CHANGE_CALL_NOT_USED
604     case TXM_THREAD_PREEMPTION_CHANGE_CALL:
605     {
606         return_value = _txm_module_manager_tx_thread_preemption_change_dispatch(module_instance, param_0, param_1, param_2);
607         break;
608     }
609     #endif
610 
611     #ifndef TXM_THREAD_PRIORITY_CHANGE_CALL_NOT_USED
612     case TXM_THREAD_PRIORITY_CHANGE_CALL:
613     {
614         return_value = _txm_module_manager_tx_thread_priority_change_dispatch(module_instance, param_0, param_1, param_2);
615         break;
616     }
617     #endif
618 
619     #ifndef TXM_THREAD_RELINQUISH_CALL_NOT_USED
620     case TXM_THREAD_RELINQUISH_CALL:
621     {
622         return_value = _txm_module_manager_tx_thread_relinquish_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
623         break;
624     }
625     #endif
626 
627     #ifndef TXM_THREAD_RESET_CALL_NOT_USED
628     case TXM_THREAD_RESET_CALL:
629     {
630         return_value = _txm_module_manager_tx_thread_reset_dispatch(module_instance, param_0);
631         break;
632     }
633     #endif
634 
635     #ifndef TXM_THREAD_RESUME_CALL_NOT_USED
636     case TXM_THREAD_RESUME_CALL:
637     {
638         return_value = _txm_module_manager_tx_thread_resume_dispatch(module_instance, param_0);
639         break;
640     }
641     #endif
642 
643     #ifndef TXM_THREAD_SLEEP_CALL_NOT_USED
644     case TXM_THREAD_SLEEP_CALL:
645     {
646         return_value = _txm_module_manager_tx_thread_sleep_dispatch(module_instance, param_0);
647         break;
648     }
649     #endif
650 
651     #ifndef TXM_THREAD_STACK_ERROR_NOTIFY_CALL_NOT_USED
652     case TXM_THREAD_STACK_ERROR_NOTIFY_CALL:
653     {
654         return_value = _txm_module_manager_tx_thread_stack_error_notify_dispatch(module_instance, param_0);
655         break;
656     }
657     #endif
658 
659     #ifndef TXM_THREAD_SUSPEND_CALL_NOT_USED
660     case TXM_THREAD_SUSPEND_CALL:
661     {
662         return_value = _txm_module_manager_tx_thread_suspend_dispatch(module_instance, param_0);
663         break;
664     }
665     #endif
666 
667     #ifndef TXM_THREAD_SYSTEM_SUSPEND_CALL_NOT_USED
668     case TXM_THREAD_SYSTEM_SUSPEND_CALL:
669     {
670         return_value = _txm_module_manager_tx_thread_system_suspend_dispatch(module_instance, param_0);
671         break;
672     }
673     #endif
674 
675     #ifndef TXM_THREAD_TERMINATE_CALL_NOT_USED
676     case TXM_THREAD_TERMINATE_CALL:
677     {
678         return_value = _txm_module_manager_tx_thread_terminate_dispatch(module_instance, param_0);
679         break;
680     }
681     #endif
682 
683     #ifndef TXM_THREAD_TIME_SLICE_CHANGE_CALL_NOT_USED
684     case TXM_THREAD_TIME_SLICE_CHANGE_CALL:
685     {
686         return_value = _txm_module_manager_tx_thread_time_slice_change_dispatch(module_instance, param_0, param_1, param_2);
687         break;
688     }
689     #endif
690 
691     #ifndef TXM_THREAD_WAIT_ABORT_CALL_NOT_USED
692     case TXM_THREAD_WAIT_ABORT_CALL:
693     {
694         return_value = _txm_module_manager_tx_thread_wait_abort_dispatch(module_instance, param_0);
695         break;
696     }
697     #endif
698 
699     #ifndef TXM_TIME_GET_CALL_NOT_USED
700     case TXM_TIME_GET_CALL:
701     {
702         return_value = _txm_module_manager_tx_time_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
703         break;
704     }
705     #endif
706 
707     #ifndef TXM_TIME_SET_CALL_NOT_USED
708     case TXM_TIME_SET_CALL:
709     {
710         return_value = _txm_module_manager_tx_time_set_dispatch(module_instance, param_0);
711         break;
712     }
713     #endif
714 
715     #ifndef TXM_TIMER_ACTIVATE_CALL_NOT_USED
716     case TXM_TIMER_ACTIVATE_CALL:
717     {
718         return_value = _txm_module_manager_tx_timer_activate_dispatch(module_instance, param_0);
719         break;
720     }
721     #endif
722 
723     #ifndef TXM_TIMER_CHANGE_CALL_NOT_USED
724     case TXM_TIMER_CHANGE_CALL:
725     {
726         return_value = _txm_module_manager_tx_timer_change_dispatch(module_instance, param_0, param_1, param_2);
727         break;
728     }
729     #endif
730 
731     #ifndef TXM_TIMER_CREATE_CALL_NOT_USED
732     case TXM_TIMER_CREATE_CALL:
733     {
734         return_value = _txm_module_manager_tx_timer_create_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
735         break;
736     }
737     #endif
738 
739     #ifndef TXM_TIMER_DEACTIVATE_CALL_NOT_USED
740     case TXM_TIMER_DEACTIVATE_CALL:
741     {
742         return_value = _txm_module_manager_tx_timer_deactivate_dispatch(module_instance, param_0);
743         break;
744     }
745     #endif
746 
747     #ifndef TXM_TIMER_DELETE_CALL_NOT_USED
748     case TXM_TIMER_DELETE_CALL:
749     {
750         return_value = _txm_module_manager_tx_timer_delete_dispatch(module_instance, param_0);
751         break;
752     }
753     #endif
754 
755     #ifndef TXM_TIMER_INFO_GET_CALL_NOT_USED
756     case TXM_TIMER_INFO_GET_CALL:
757     {
758         return_value = _txm_module_manager_tx_timer_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
759         break;
760     }
761     #endif
762 
763     #ifndef TXM_TIMER_PERFORMANCE_INFO_GET_CALL_NOT_USED
764     case TXM_TIMER_PERFORMANCE_INFO_GET_CALL:
765     {
766         return_value = _txm_module_manager_tx_timer_performance_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
767         break;
768     }
769     #endif
770 
771     #ifndef TXM_TIMER_PERFORMANCE_SYSTEM_INFO_GET_CALL_NOT_USED
772     case TXM_TIMER_PERFORMANCE_SYSTEM_INFO_GET_CALL:
773     {
774         return_value = _txm_module_manager_tx_timer_performance_system_info_get_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
775         break;
776     }
777     #endif
778 
779     #ifndef TXM_TRACE_BUFFER_FULL_NOTIFY_CALL_NOT_USED
780     case TXM_TRACE_BUFFER_FULL_NOTIFY_CALL:
781     {
782         return_value = _txm_module_manager_tx_trace_buffer_full_notify_dispatch(module_instance, param_0);
783         break;
784     }
785     #endif
786 
787     #ifndef TXM_TRACE_DISABLE_CALL_NOT_USED
788     case TXM_TRACE_DISABLE_CALL:
789     {
790         return_value = _txm_module_manager_tx_trace_disable_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
791         break;
792     }
793     #endif
794 
795     #ifndef TXM_TRACE_ENABLE_CALL_NOT_USED
796     case TXM_TRACE_ENABLE_CALL:
797     {
798         return_value = _txm_module_manager_tx_trace_enable_dispatch(module_instance, param_0, param_1, param_2);
799         break;
800     }
801     #endif
802 
803     #ifndef TXM_TRACE_EVENT_FILTER_CALL_NOT_USED
804     case TXM_TRACE_EVENT_FILTER_CALL:
805     {
806         return_value = _txm_module_manager_tx_trace_event_filter_dispatch(module_instance, param_0);
807         break;
808     }
809     #endif
810 
811     #ifndef TXM_TRACE_EVENT_UNFILTER_CALL_NOT_USED
812     case TXM_TRACE_EVENT_UNFILTER_CALL:
813     {
814         return_value = _txm_module_manager_tx_trace_event_unfilter_dispatch(module_instance, param_0);
815         break;
816     }
817     #endif
818 
819     #ifndef TXM_TRACE_INTERRUPT_CONTROL_CALL_NOT_USED
820     case TXM_TRACE_INTERRUPT_CONTROL_CALL:
821     {
822         return_value = _txm_module_manager_tx_trace_interrupt_control_dispatch(module_instance, param_0);
823         break;
824     }
825     #endif
826 
827     #ifndef TXM_TRACE_ISR_ENTER_INSERT_CALL_NOT_USED
828     case TXM_TRACE_ISR_ENTER_INSERT_CALL:
829     {
830         return_value = _txm_module_manager_tx_trace_isr_enter_insert_dispatch(module_instance, param_0);
831         break;
832     }
833     #endif
834 
835     #ifndef TXM_TRACE_ISR_EXIT_INSERT_CALL_NOT_USED
836     case TXM_TRACE_ISR_EXIT_INSERT_CALL:
837     {
838         return_value = _txm_module_manager_tx_trace_isr_exit_insert_dispatch(module_instance, param_0);
839         break;
840     }
841     #endif
842 
843     #ifndef TXM_TRACE_USER_EVENT_INSERT_CALL_NOT_USED
844     case TXM_TRACE_USER_EVENT_INSERT_CALL:
845     {
846         return_value = _txm_module_manager_tx_trace_user_event_insert_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
847         break;
848     }
849     #endif
850 
851     #ifndef TXM_MODULE_OBJECT_ALLOCATE_CALL_NOT_USED
852     case TXM_MODULE_OBJECT_ALLOCATE_CALL:
853     {
854         return_value = _txm_module_manager_txm_module_object_allocate_dispatch(module_instance, param_0, param_1);
855         break;
856     }
857     #endif
858 
859     #ifndef TXM_MODULE_OBJECT_DEALLOCATE_CALL_NOT_USED
860     case TXM_MODULE_OBJECT_DEALLOCATE_CALL:
861     {
862         return_value = _txm_module_manager_txm_module_object_deallocate_dispatch(module_instance, param_0);
863         break;
864     }
865     #endif
866 
867     #ifndef TXM_MODULE_OBJECT_POINTER_GET_CALL_NOT_USED
868     case TXM_MODULE_OBJECT_POINTER_GET_CALL:
869     {
870         return_value = _txm_module_manager_txm_module_object_pointer_get_dispatch(module_instance, param_0, param_1, param_2);
871         break;
872     }
873     #endif
874 
875     #ifndef TXM_MODULE_OBJECT_POINTER_GET_EXTENDED_CALL_NOT_USED
876     case TXM_MODULE_OBJECT_POINTER_GET_EXTENDED_CALL:
877     {
878         return_value = _txm_module_manager_txm_module_object_pointer_get_extended_dispatch(module_instance, param_0, param_1, (ALIGN_TYPE *) param_2);
879         break;
880     }
881     #endif
882 
883     default:
884     {
885 #ifdef TXM_MODULE_PORT_DISPATCH
886         /* Is this a port-specific request? */
887         if ((kernel_request >= TXM_MODULE_PORT_EXTENSION_API_ID_START) && (kernel_request <= TXM_MODULE_PORT_EXTENSION_API_ID_END))
888         {
889             /* Yes, call the port-specific dispatcher. */
890             return_value = (ALIGN_TYPE) _txm_module_manager_port_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
891         }
892 #endif
893 
894         #ifndef TXM_MODULE_APPLICATION_REQUEST_CALL_NOT_USED
895         /* Determine if an application request is present.  */
896         if (kernel_request >= TXM_APPLICATION_REQUEST_ID_BASE)
897         {
898             /* Yes, call the module manager function that the application defines in order to
899                support application-specific requests.  */
900             return_value =  (ALIGN_TYPE)  _txm_module_manager_application_request(kernel_request-TXM_APPLICATION_REQUEST_ID_BASE, param_0, param_1, param_2);
901         }
902         #endif
903 
904 #ifdef TXM_MODULE_ENABLE_NETX
905         /* Determine if there is a NetX request.  */
906         else if ((kernel_request >= TXM_NETX_API_ID_START) && (kernel_request < TXM_NETX_API_ID_END))
907         {
908             /* Call the NetX module dispatch function.  */
909             return_value =  _txm_module_manager_netx_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
910         }
911 #endif
912 
913 #ifdef TXM_MODULE_ENABLE_NETXDUO
914         /* Determine if there is a NetX Duo request.  */
915         else if ((kernel_request >= TXM_NETXDUO_API_ID_START) && (kernel_request < TXM_NETXDUO_API_ID_END))
916         {
917             /* Call the NetX Duo module dispatch function.  */
918             return_value =  _txm_module_manager_netxduo_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
919         }
920 #endif
921 
922 #ifdef TXM_MODULE_ENABLE_FILEX
923         /* Determine if there is a FileX request.  */
924         else if ((kernel_request >= TXM_FILEX_API_ID_START) && (kernel_request < TXM_FILEX_API_ID_END))
925         {
926             /* Call the FileX module dispatch function.  */
927             return_value =  _txm_module_manager_filex_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
928         }
929 #endif
930 
931 #ifdef TXM_MODULE_ENABLE_GUIX
932         /* Determine if there is a GUIX request.  */
933         else if ((kernel_request >= TXM_GUIX_API_ID_START) && (kernel_request < TXM_GUIX_API_ID_END))
934         {
935             /* Call the GUIX module dispatch function.  */
936             return_value =  _txm_module_manager_guix_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
937         }
938 #endif
939 
940 #ifdef TXM_MODULE_ENABLE_USBX
941         /* Determine if there is a USBX request.  */
942         else if ((kernel_request >= TXM_USBX_API_ID_START) && (kernel_request < TXM_USBX_API_ID_END))
943         {
944             /* Call the USBX dispatch function.  */
945             return_value =  _txm_module_manager_usbx_dispatch(module_instance, kernel_request, param_0, param_1, param_2);
946         }
947 #endif
948 
949         /* Unhandled kernel request, return an error!  */
950         break;
951     }
952     }
953 
954     return(return_value);
955 }
956