diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-07 14:50:37 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-10 12:37:40 +0200 |
commit | 263f4beceae0ec5602cb41e792c25ebe3ec49c97 (patch) | |
tree | 7941a5035b4834597e9cdb855e92b4a9d8b5ac27 /cpukit/sapi/include | |
parent | documentation: Clarify (diff) | |
download | rtems-263f4beceae0ec5602cb41e792c25ebe3ec49c97.tar.bz2 |
score: Statically initialize IO manager
This simplifies the RTEMS initialization and helps to avoid a memory
overhead. The workspace demands of the IO manager were not included in
the <rtems/confdefs.h> workspace size estimate. This is also fixed as a
side-effect.
Update documentation and move "Specifying Application Defined Device
Driver Table" to the section end. This sub-section is not that
important for the user. Mentioning this at the beginning may lead to
confusion.
Diffstat (limited to '')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 37 | ||||
-rw-r--r-- | cpukit/sapi/include/rtems/config.h | 13 | ||||
-rw-r--r-- | cpukit/sapi/include/rtems/io.h | 13 |
3 files changed, 16 insertions, 47 deletions
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 5f64d73e8d..53a8699aa1 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -70,7 +70,6 @@ extern "C" { #endif extern rtems_initialization_tasks_table Initialization_tasks[]; -extern rtems_driver_address_table Device_drivers[]; #if defined(RTEMS_MULTIPROCESSING) extern rtems_multiprocessing_table Multiprocessing_configuration; #endif @@ -1202,8 +1201,18 @@ const rtems_libio_helper rtems_fs_init_helper = #ifndef CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE +/** + * This specifies the maximum number of device drivers that + * can be installed in the system at one time. It must account + * for both the statically and dynamically installed drivers. + */ +#ifndef CONFIGURE_MAXIMUM_DRIVERS + #define CONFIGURE_MAXIMUM_DRIVERS +#endif + #ifdef CONFIGURE_INIT - rtems_driver_address_table Device_drivers[] = { + rtems_driver_address_table + _IO_Driver_address_table[ CONFIGURE_MAXIMUM_DRIVERS ] = { #ifdef CONFIGURE_BSP_PREREQUISITE_DRIVERS CONFIGURE_BSP_PREREQUISITE_DRIVERS, #endif @@ -1254,27 +1263,12 @@ const rtems_libio_helper rtems_fs_init_helper = NULL_DRIVER_TABLE_ENTRY #endif }; -#endif - -#endif /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */ -/* - * Default the number of drivers per node. This value may be - * overridden by the user. - */ - -#define CONFIGURE_NUMBER_OF_DRIVERS \ - RTEMS_ARRAY_SIZE(Device_drivers) - -/** - * This specifies the maximum number of device drivers that - * can be installed in the system at one time. It must account - * for both the statically and dynamically installed drivers. - */ -#ifndef CONFIGURE_MAXIMUM_DRIVERS - #define CONFIGURE_MAXIMUM_DRIVERS CONFIGURE_NUMBER_OF_DRIVERS + const size_t _IO_Number_of_drivers = + RTEMS_ARRAY_SIZE( _IO_Driver_address_table ); #endif +#endif /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */ #ifdef CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER /* @@ -2475,9 +2469,6 @@ const rtems_libio_helper rtems_fs_init_helper = false, #endif #endif - CONFIGURE_MAXIMUM_DRIVERS, /* maximum device drivers */ - CONFIGURE_NUMBER_OF_DRIVERS, /* static device drivers */ - Device_drivers, /* pointer to driver table */ CONFIGURE_NUMBER_OF_INITIAL_EXTENSIONS, /* number of static extensions */ CONFIGURE_INITIAL_EXTENSION_TABLE, /* pointer to static extensions */ #if defined(RTEMS_MULTIPROCESSING) diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index 0998f054ec..9a9d0a3694 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -57,7 +57,6 @@ typedef void *posix_api_configuration_table; #include <rtems/rtems/config.h> #include <rtems/extension.h> -#include <rtems/io.h> #if defined(RTEMS_MULTIPROCESSING) #include <rtems/score/mpci.h> #endif @@ -242,9 +241,6 @@ typedef struct { bool smp_enabled; #endif - uint32_t maximum_drivers; - uint32_t number_of_device_drivers; - rtems_driver_address_table *Device_driver_table; uint32_t number_of_initial_extensions; const rtems_extensions_table *User_extension_table; #if defined(RTEMS_MULTIPROCESSING) @@ -335,15 +331,6 @@ extern const rtems_configuration_table Configuration; #define rtems_configuration_get_do_zero_of_workspace() \ (Configuration.do_zero_of_workspace) -#define rtems_configuration_get_maximum_drivers() \ - (Configuration.maximum_drivers) - -#define rtems_configuration_get_number_of_device_drivers() \ - (Configuration.number_of_device_drivers) - -#define rtems_configuration_get_device_driver_table() \ - (Configuration.Device_driver_table) - #define rtems_configuration_get_number_of_initial_extensions() \ (Configuration.number_of_initial_extensions) diff --git a/cpukit/sapi/include/rtems/io.h b/cpukit/sapi/include/rtems/io.h index 799a30582d..ce750b0f69 100644 --- a/cpukit/sapi/include/rtems/io.h +++ b/cpukit/sapi/include/rtems/io.h @@ -250,18 +250,9 @@ rtems_status_code rtems_io_lookup_name( rtems_driver_name_t *device_info ) RTEMS_COMPILER_DEPRECATED_ATTRIBUTE; -SAPI_IO_EXTERN uint32_t _IO_Number_of_drivers; +extern const size_t _IO_Number_of_drivers; -SAPI_IO_EXTERN rtems_driver_address_table *_IO_Driver_address_table; - -/** - * @brief Initialization of device drivers. - * - * NOTE: The IO manager has been extended to support runtime driver - * registration. The driver table is now allocated in the - * workspace. - */ -void _IO_Manager_initialization( void ); +extern rtems_driver_address_table _IO_Driver_address_table[]; /** * @brief Initialization of all device drivers. |