config: Provide file descriptors only if necessary

Only provide the file descriptor array if
CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0.  If someone configured
CONFIGURE_MAXIMUM_FILE_DESCRIPTORS == 0 and the appplication uses
something which requires a file descriptor, then a linker error will
show up.  An alternative would be to add a zero-length array
rtems_libio_iops[ 0 ] to librtemscpu.a which would be used in this
case.

Conditionally include some header files.
This commit is contained in:
Sebastian Huber committed 2020-08-31 16:19:57 +02:00
1 parent 1818b9a826
commit ced28f2cfc
1 file changed
+15 -9
+15 -9
View File
@@ -43,7 +43,6 @@
#ifdef CONFIGURE_INIT
#include <rtems/confdefs/bsp.h>
#include <rtems/libio.h>
#include <rtems/sysinit.h>
#ifdef CONFIGURE_FILESYSTEM_ALL
@@ -86,6 +85,15 @@
#define CONFIGURE_IMFS_DISABLE_UTIME
#endif
#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3
#endif
#if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) || \
CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0
#include <rtems/libio.h>
#endif
#ifdef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
#ifdef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM"
@@ -122,10 +130,10 @@
#ifdef CONFIGURE_FILESYSTEM_TFTPFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_TFTPFS"
#endif
#else
#include <rtems/imfs.h>
#endif
#include <rtems/imfs.h>
#ifdef CONFIGURE_FILESYSTEM_DOSFS
#include <rtems/dosfs.h>
#endif
@@ -316,14 +324,12 @@ RTEMS_SYSINIT_ITEM(
#endif /* !CONFIGURE_APPLICATION_DISABLE_FILESYSTEM */
#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3
#if CONFIGURE_MAXIMUM_FILE_DESCRIPTORS > 0
rtems_libio_t rtems_libio_iops[ CONFIGURE_MAXIMUM_FILE_DESCRIPTORS ];
const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE( rtems_libio_iops );
#endif
rtems_libio_t rtems_libio_iops[ CONFIGURE_MAXIMUM_FILE_DESCRIPTORS ];
const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE( rtems_libio_iops );
#ifdef __cplusplus
}
#endif