diff options
Diffstat (limited to 'ACE/ace/OS_main.h')
-rw-r--r-- | ACE/ace/OS_main.h | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/ACE/ace/OS_main.h b/ACE/ace/OS_main.h index b1ffac914a5..4dd48ffa794 100644 --- a/ACE/ace/OS_main.h +++ b/ACE/ace/OS_main.h @@ -23,6 +23,10 @@ # pragma once # endif /* ACE_LACKS_PRAGMA_ONCE */ +#if defined (ACE_MQX) +# include "ace/MQX_Filesystem.h" +#endif + # if !defined (ACE_DOESNT_DEFINE_MAIN) # if defined (ACE_HAS_RTEMS) @@ -55,7 +59,7 @@ extern char* rtems_progname; return ace_main_i (argc, wide_argv.get_TCHAR_argv ()); \ } \ int ace_main_i -# else +# elif !defined (ACE_MQX) # define ACE_TMAIN main # endif /* ACE_USES_WCHAR */ # endif @@ -301,6 +305,31 @@ int ace_main_i # endif /* ACE_PSOSIM */ # endif /* ACE_HAS_NONSTATIC_OBJECT_MANAGER && !ACE_HAS_WINCE && !ACE_DOESNT_INSTANTIATE_NONSTATIC_OBJECT_MANAGER */ +# ifdef ACE_MQX +# include <iar_dynamic_init.h> +# include "ace/MQX_Filesystem.h" +# define ACE_TMAIN \ +ace_main_i(int argc, ACE_TCHAR *argv[]); \ +static void main_task(uint32_t param) { \ + __iar_dynamic_initialization(); \ + RTCS_create(); \ + MQX_Filesystem::inst ().complete_initialization (); \ + ace_main_i(0, 0); \ +} \ +static TASK_TEMPLATE_STRUCT MQX_template_list[] = { \ + {1, main_task, 25000, 9, "Main", MQX_AUTO_START_TASK, 0, 0 }, { 0 } \ +}; \ +static const MQX_INITIALIZATION_STRUCT MQX_init_struct = { \ + BSP_DEFAULT_PROCESSOR_NUMBER, BSP_DEFAULT_START_OF_KERNEL_MEMORY, \ + BSP_DEFAULT_END_OF_KERNEL_MEMORY, BSP_DEFAULT_INTERRUPT_STACK_SIZE, \ + MQX_template_list, BSP_DEFAULT_MQX_HARDWARE_INTERRUPT_LEVEL_MAX, \ + BSP_DEFAULT_MAX_MSGPOOLS, BSP_DEFAULT_MAX_MSGQS, \ + BSP_DEFAULT_IO_CHANNEL, (char const*)BSP_DEFAULT_IO_OPEN_MODE, 0, 0 \ +}; \ +int main() { return _mqx( (MQX_INITIALIZATION_STRUCT_PTR) &MQX_init_struct ); } \ +int ace_main_i +# endif /* ACE_MQX */ + #endif /* ACE_DOESNT_DEFINE_MAIN */ # include /**/ "ace/post.h" |