diff options
Diffstat (limited to 'cpukit/include/rtems/confdefs/iodrivers.h')
-rw-r--r-- | cpukit/include/rtems/confdefs/iodrivers.h | 85 |
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 */ |