summaryrefslogtreecommitdiffstats
path: root/c/src/exec/sapi/include
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2001-10-16 19:05:29 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2001-10-16 19:05:29 +0000
commit059a371409f8e35a635e412cd9061a41d4cf7c46 (patch)
tree6ad23cf6cbe3906006b3f802d0ee92c56026bdc8 /c/src/exec/sapi/include
parent2001-10-16 Ralf Corsepius <corsepiu@faw.uni-ulm.de> (diff)
downloadrtems-059a371409f8e35a635e412cd9061a41d4cf7c46.tar.bz2
2001-10-16 Chris Johns <ccj@acm.org>
* 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.
Diffstat (limited to 'c/src/exec/sapi/include')
-rw-r--r--c/src/exec/sapi/include/confdefs.h10
-rw-r--r--c/src/exec/sapi/include/rtems/config.h1
-rw-r--r--c/src/exec/sapi/include/rtems/io.h29
3 files changed, 40 insertions, 0 deletions
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
@@ -300,6 +300,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,11 +100,40 @@ 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
*
* DESCRIPTION: