diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-04-15 20:50:31 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1998-04-15 20:50:31 +0000 |
commit | bd9c3d1e76df8b4e774f50dbaf1bd5ebeeb7a154 (patch) | |
tree | a5409842b20b5263d7b14910033e728927dd4d41 /c/src/lib/libbsp/shared/main.c | |
parent | Transitioned to shared bsp_libc_init() and cleaned up comments. (diff) | |
download | rtems-bd9c3d1e76df8b4e774f50dbaf1bd5ebeeb7a154.tar.bz2 |
Numerous changes which in total greatly reduced the amount of source
code in each BSP's bspstart.c. These changes were:
+ confdefs.h now knows libio's semaphore requirements
+ shared/main.c now copies Configuration to BSP_Configuration
+ shared/main.c fills in the Cpu_table with default values
This removed the need for rtems_libio_config() and the constant
BSP_LIBIO_MAX_FDS in every BSP. Plus now the maximum number of open
files can now be set on the gcc command line.
Diffstat (limited to 'c/src/lib/libbsp/shared/main.c')
-rw-r--r-- | c/src/lib/libbsp/shared/main.c | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/shared/main.c b/c/src/lib/libbsp/shared/main.c index 7d5138d84f..5a49524cba 100644 --- a/c/src/lib/libbsp/shared/main.c +++ b/c/src/lib/libbsp/shared/main.c @@ -24,6 +24,7 @@ char *rtems_progname; extern void bsp_start( void ); extern void bsp_cleanup( void ); +extern rtems_configuration_table Configuration; extern rtems_configuration_table BSP_Configuration; extern rtems_cpu_table Cpu_table; @@ -46,17 +47,60 @@ int boot_card(int argc, char **argv) { int status; - /* the atexit hook will be before the static destructor list's entry - point */ + /* + * Set default values for the CPU Table fields all ports must have. + * These values can be overridden in bsp_start() but they are + * right most of the time. + */ + + Cpu_table.pretasking_hook = NULL; + Cpu_table.predriver_hook = NULL; + Cpu_table.postdriver_hook = NULL; + Cpu_table.idle_task = NULL; + Cpu_table.do_zero_of_workspace = TRUE; + Cpu_table.interrupt_stack_size = RTEMS_MINIMUM_STACK_SIZE; + Cpu_table.extra_mpci_receive_server_stack = 0; + Cpu_table.stack_allocate_hook = NULL; + Cpu_table.stack_free_hook = NULL; + + + /* + * Copy the configuration table so we and the BSP wants to change it. + */ + + BSP_Configuration = Configuration; + + /* + * The atexit hook will be before the static destructor list's entry + * point. + */ + bsp_start(); + /* + * Initialize RTEMS but do NOT start multitasking. + */ + bsp_isr_level = rtems_initialize_executive_early( &BSP_Configuration, &Cpu_table ); + /* + * Call main() and get the global constructors invoked if there + * are any. + */ + status = main(argc, argv); + /* + * Perform any BSP specific shutdown actions. + */ + bsp_cleanup(); + /* + * Now return to the start code. + */ + return status; } |