summaryrefslogtreecommitdiffstats
path: root/cpukit/include/rtems/confdefs/iodrivers.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/include/rtems/confdefs/iodrivers.h')
-rw-r--r--cpukit/include/rtems/confdefs/iodrivers.h85
1 files changed, 53 insertions, 32 deletions
diff --git a/cpukit/include/rtems/confdefs/iodrivers.h b/cpukit/include/rtems/confdefs/iodrivers.h
index e12640624d..16d64fbb98 100644
--- a/cpukit/include/rtems/confdefs/iodrivers.h
+++ b/cpukit/include/rtems/confdefs/iodrivers.h
@@ -10,7 +10,7 @@
*/
/*
- * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+ * Copyright (C) 2020 embedded brains GmbH & Co. KG
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -43,16 +43,30 @@
#ifdef CONFIGURE_INIT
-#if defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS) \
- || defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) \
- || defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) \
- || CONFIGURE_MAXIMUM_DRIVERS > 0
+#include <rtems/confdefs/bsp.h>
+
+#if !defined(CONFIGURE_DISABLE_BSP_SETTINGS) && \
+ defined(CONFIGURE_BSP_PREREQUISITE_DRIVERS)
+#define _CONFIGURE_BSP_PREREQUISITE_DRIVERS CONFIGURE_BSP_PREREQUISITE_DRIVERS
+#endif
+
+#if defined(_CONFIGURE_BSP_PREREQUISITE_DRIVERS) || \
+ defined(CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS)
+#define _CONFIGURE_HAS_IO_DRIVERS
+#endif
+
+#if defined(_CONFIGURE_HAS_IO_DRIVERS) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) || \
+ CONFIGURE_MAXIMUM_DRIVERS > 0
#include <rtems/ioimpl.h>
#include <rtems/sysinit.h>
@@ -110,8 +124,8 @@ extern "C" {
rtems_driver_address_table
_IO_Driver_address_table[ CONFIGURE_MAXIMUM_DRIVERS ] = {
- #ifdef CONFIGURE_BSP_PREREQUISITE_DRIVERS
- CONFIGURE_BSP_PREREQUISITE_DRIVERS,
+ #ifdef _CONFIGURE_BSP_PREREQUISITE_DRIVERS
+ _CONFIGURE_BSP_PREREQUISITE_DRIVERS,
#endif
#ifdef CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS,
@@ -143,15 +157,8 @@ _IO_Driver_address_table[ CONFIGURE_MAXIMUM_DRIVERS ] = {
#ifdef CONFIGURE_APPLICATION_EXTRA_DRIVERS
CONFIGURE_APPLICATION_EXTRA_DRIVERS,
#endif
- #if defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) \
- || ( !defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER) \
- && !defined(CONFIGURE_APPLICATION_EXTRA_DRIVERS) )
+ #if defined(CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER) || \
+ !defined(_CONFIGURE_HAS_IO_DRIVERS)
NULL_DRIVER_TABLE_ENTRY
#endif
};
@@ -178,16 +185,30 @@ RTEMS_SYSINIT_ITEM(
}
#endif
-#endif /* CONFIGURE_APPLICATION_EXTRA_DRIVERS
- || CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
- || CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
- || CONFIGURE_MAXIMUM_DRIVERS */
+#endif /* _CONFIGURE_HAS_IO_DRIVERS) ||
+ CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER ||
+ CONFIGURE_MAXIMUM_DRIVERS */
+
+
+/*
+ * If any flavor of console driver is configured, then configure the post
+ * driver hook which opens /dev/console as stdin, stdout, and stderr.
+ *
+ * NOTE: This also results in an atexit() handler being registered to close
+ * /dev/console.
+ */
+#if defined(CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER) || \
+ defined(CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER)
+
+ #include <rtems/libio.h>
+
+ RTEMS_SYSINIT_ITEM(
+ rtems_libio_post_driver,
+ RTEMS_SYSINIT_STD_FILE_DESCRIPTORS,
+ RTEMS_SYSINIT_ORDER_MIDDLE
+ );
+#endif
#endif /* CONFIGURE_INIT */