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