From 059a371409f8e35a635e412cd9061a41d4cf7c46 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 16 Oct 2001 19:05:29 +0000 Subject: 2001-10-16 Chris Johns * include/confdefs.h, include/rtems/config.h, include/rtems/io.h, optman/no-io.c, src/exinit.c, src/io.c: Added a device driver register/unregister interface to allow device drivers to be installed and removed at runtime. This means you do not need devices present in the device table when you build. --- c/src/exec/sapi/include/confdefs.h | 10 ++++++++++ c/src/exec/sapi/include/rtems/config.h | 1 + c/src/exec/sapi/include/rtems/io.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) (limited to 'c/src/exec/sapi/include') diff --git a/c/src/exec/sapi/include/confdefs.h b/c/src/exec/sapi/include/confdefs.h index 0dda508462..75e6a23a19 100644 --- a/c/src/exec/sapi/include/confdefs.h +++ b/c/src/exec/sapi/include/confdefs.h @@ -299,6 +299,15 @@ rtems_driver_address_table Device_drivers[] = { #endif /* CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE */ +/* + * Default the number of drivers per node. This value may be + * overridden by the user. + */ + +#ifndef CONFIGURE_MAXIMUM_DRIVERS +#define CONFIGURE_MAXIMUM_DRIVERS 10 +#endif + /* * Default the number of devices per device driver. This value may be * overridden by the user. @@ -993,6 +1002,7 @@ rtems_configuration_table Configuration = { CONFIGURE_MICROSECONDS_PER_TICK, CONFIGURE_TICKS_PER_TIMESLICE, CONFIGURE_MAXIMUM_DEVICES, + CONFIGURE_MAXIMUM_DRIVERS, sizeof (Device_drivers)/ sizeof(rtems_driver_address_table), /* number of device drivers */ Device_drivers, /* pointer to driver table */ diff --git a/c/src/exec/sapi/include/rtems/config.h b/c/src/exec/sapi/include/rtems/config.h index bd8d972fc2..eba53a6818 100644 --- a/c/src/exec/sapi/include/rtems/config.h +++ b/c/src/exec/sapi/include/rtems/config.h @@ -104,6 +104,7 @@ typedef struct { unsigned32 microseconds_per_tick; unsigned32 ticks_per_timeslice; unsigned32 maximum_devices; + unsigned32 maximum_drivers; unsigned32 number_of_device_drivers; rtems_driver_address_table *Device_driver_table; unsigned32 number_of_initial_extensions; diff --git a/c/src/exec/sapi/include/rtems/io.h b/c/src/exec/sapi/include/rtems/io.h index 4d8b3c027c..60d7ea2d53 100644 --- a/c/src/exec/sapi/include/rtems/io.h +++ b/c/src/exec/sapi/include/rtems/io.h @@ -100,10 +100,39 @@ SAPI_EXTERN rtems_driver_name_t *_IO_Driver_name_table; void _IO_Manager_initialization( rtems_driver_address_table *driver_table, + unsigned32 drivers_in_table, unsigned32 number_of_drivers, unsigned32 number_of_devices ); +/* + * rtems_io_register_driver + * + * DESCRIPTION: + * + * Register a driver into the device driver table. + * + */ + +rtems_status_code rtems_io_register_driver( + rtems_device_major_number major, + rtems_driver_address_table *driver_table, + rtems_device_major_number *registered_major +); + +/* + * rtems_io_unregister_driver + * + * DESCRIPTION: + * + * Unregister a driver from the device driver table. + * + */ + +rtems_status_code rtems_io_unregister_driver( + rtems_device_major_number major +); + /* * rtems_io_register_name * -- cgit v1.2.3