sysinit: Do not open console when just referencing reentrancy structure.

This change eliminates a system initialization dependentcy which resulted
in an application without a file system or console referencing errno being
forced to include the code to open(/dev/console), close(), atexit(),
and the unmount infrastructure.

Closes #4439.
This commit is contained in:
Joel Sherrill
2021-05-21 16:30:20 -05:00
parent 402a206a1b
commit 76d5722b4a
2 changed files with 21 additions and 6 deletions

View File

@@ -189,6 +189,27 @@ RTEMS_SYSINIT_ITEM(
|| CONFIGURE_APPLICATION_NEEDS_ZERO_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 */
#endif /* _RTEMS_CONFDEFS_IODRIVERS_H */

View File

@@ -65,9 +65,3 @@ RTEMS_SYSINIT_ITEM(
RTEMS_SYSINIT_LIBIO,
RTEMS_SYSINIT_ORDER_MIDDLE
);
RTEMS_SYSINIT_ITEM(
rtems_libio_post_driver,
RTEMS_SYSINIT_STD_FILE_DESCRIPTORS,
RTEMS_SYSINIT_ORDER_MIDDLE
);