config: Add <rtems/confdefs/libio.h>

Remove all comments and copyrightable content from the moved content.
Use BSD-2-Clause license for new file.

Update #3053.
Update #3875.
This commit is contained in:
Sebastian Huber
2020-02-25 07:18:36 +01:00
parent 0f8e139e14
commit 16082210d6
3 changed files with 412 additions and 448 deletions
+1
View File
@@ -184,6 +184,7 @@ include_rtems_HEADERS += include/rtems/version.h
include_rtems_HEADERS += include/rtems/vmeintr.h
include_rtems_HEADERS += include/rtems/watchdogdrv.h
include_rtems_confdefs_HEADERS += include/rtems/confdefs/bsp.h
include_rtems_confdefs_HEADERS += include/rtems/confdefs/libio.h
include_rtems_confdefs_HEADERS += include/rtems/confdefs/libpci.h
include_rtems_confdefs_HEADERS += include/rtems/confdefs/obsolete.h
include_rtems_confdefs_HEADERS += include/rtems/confdefs/percpu.h
+1 -448
View File
@@ -50,6 +50,7 @@
#include <rtems/posix/shm.h>
#include <rtems/posix/timer.h>
#include <rtems/confdefs/obsolete.h>
#include <rtems/confdefs/libio.h>
#include <rtems/confdefs/libpci.h>
#include <rtems/confdefs/percpu.h>
@@ -100,441 +101,6 @@ extern "C" {
#undef RTEMS_NEWLIB
#endif
#ifndef RTEMS_SCHEDSIM
#include <rtems/libio_.h>
#ifdef CONFIGURE_INIT
#ifndef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
RTEMS_SYSINIT_ITEM(
rtems_filesystem_initialize,
RTEMS_SYSINIT_ROOT_FILESYSTEM,
RTEMS_SYSINIT_ORDER_MIDDLE
);
#endif
#endif
#endif
/**
* This macro defines the number of POSIX file descriptors allocated
* and managed by libio. These are the "integer" file descriptors that
* are used by calls like open(2) and read(2).
*/
#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3
#endif
#ifdef CONFIGURE_INIT
rtems_libio_t rtems_libio_iops[CONFIGURE_MAXIMUM_FILE_DESCRIPTORS];
/**
* When instantiating the configuration tables, this variable is
* initialized to specify the maximum number of file descriptors.
*/
const uint32_t rtems_libio_number_iops = RTEMS_ARRAY_SIZE(rtems_libio_iops);
#endif
/*
* This sets up the resources for the FIFOs/pipes.
*/
/**
* @defgroup ConfigFilesystems Filesystems and Mount Table Configuration
*
* @ingroup Configuration
*
* Defines to control the file system:
*
* - CONFIGURE_APPLICATION_DISABLE_FILESYSTEM:
* Disable the RTEMS filesystems. You get an empty DEVFS.
*
* - CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM:
* Use the DEVFS as the root file system. Limited functions are
* provided when this is used.
*
* - CONFIGURE_FILESYSTEM_ALL:
* Add file filesystems to the default filesystem table.
*
* List of available file systems. You can define as many as you like:
* - CONFIGURE_FILESYSTEM_IMFS - In Memory File System (IMFS)
* - CONFIGURE_FILESYSTEM_DEVFS - Device File System (DSVFS)
* - CONFIGURE_FILESYSTEM_TFTPFS - TFTP File System, networking enabled
* - CONFIGURE_FILESYSTEM_FTPFS - FTP File System, networking enabled
* - CONFIGURE_FILESYSTEM_NFS - Network File System, networking enabled
* - CONFIGURE_FILESYSTEM_DOSFS - DOS File System, uses libblock
* - CONFIGURE_FILESYSTEM_RFS - RTEMS File System (RFS), uses libblock
* - CONFIGURE_FILESYSTEM_JFFS2 - Journalling Flash File System, Version 2
*
* Combinations:
*
* - If nothing is defined the base file system is the IMFS.
*
* - If CONFIGURE_APPLICATION_DISABLE_FILESYSTEM is defined all filesystems
* are disabled by force.
*
* - If CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM is defined all filesystems
* are disabled by force and DEVFS is defined.
*/
/**@{*/
#ifdef CONFIGURE_INIT
/*
* Include all file systems. Do this before checking if the filesystem has
* been disabled.
*/
#ifdef CONFIGURE_FILESYSTEM_ALL
#define CONFIGURE_FILESYSTEM_IMFS
#define CONFIGURE_FILESYSTEM_DEVFS
#define CONFIGURE_FILESYSTEM_TFTPFS
#define CONFIGURE_FILESYSTEM_FTPFS
#define CONFIGURE_FILESYSTEM_NFS
#define CONFIGURE_FILESYSTEM_DOSFS
#define CONFIGURE_FILESYSTEM_RFS
#define CONFIGURE_FILESYSTEM_JFFS2
#endif
/*
* If disabling the file system, give a compile error if the user has
* configured other filesystem parameters.
*/
#if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM)
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
#error "Filesystem disabled and a base filesystem configured."
#endif
#if defined(CONFIGURE_FILESYSTEM_IMFS) || \
defined(CONFIGURE_FILESYSTEM_DEVFS) || \
defined(CONFIGURE_FILESYSTEM_TFTPFS) || \
defined(CONFIGURE_FILESYSTEM_FTPFS) || \
defined(CONFIGURE_FILESYSTEM_NFS) || \
defined(CONFIGURE_FILESYSTEM_DOSFS) || \
defined(CONFIGURE_FILESYSTEM_RFS) || \
defined(CONFIGURE_FILESYSTEM_JFFS2)
#error "Filesystem disabled and a filesystem configured."
#endif
#endif
/*
* If the base filesystem is DEVFS define it else define IMFS.
* We will have either DEVFS or IMFS defined after this.
*/
#if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM)
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
#define CONFIGURE_FILESYSTEM_DEVFS
#endif
#endif
#endif
#ifndef RTEMS_SCHEDSIM
/**
* IMFS
*/
#include <rtems/imfs.h>
/**
* This specifies the number of bytes per block for files within the IMFS.
* There are a maximum number of blocks per file so this dictates the maximum
* size of a file. This has to be balanced with the unused portion of each
* block that might be wasted.
*/
#ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \
IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
#endif
/**
* This defines the IMFS file system table entry.
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) && \
defined(CONFIGURE_FILESYSTEM_IMFS)
#define CONFIGURE_FILESYSTEM_ENTRY_IMFS \
{ RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize }
#endif
#endif
#ifdef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_IMFS_DISABLE_CHMOD
#define CONFIGURE_IMFS_DISABLE_CHOWN
#define CONFIGURE_IMFS_DISABLE_UTIME
#define CONFIGURE_IMFS_DISABLE_LINK
#define CONFIGURE_IMFS_DISABLE_SYMLINK
#define CONFIGURE_IMFS_DISABLE_READLINK
#define CONFIGURE_IMFS_DISABLE_RENAME
#define CONFIGURE_IMFS_DISABLE_UNMOUNT
#endif
/**
* DEVFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \
defined(CONFIGURE_FILESYSTEM_DEVFS)
#include <rtems/devfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_DEVFS \
{ RTEMS_FILESYSTEM_TYPE_DEVFS, devFS_initialize }
#endif
/**
* FTPFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \
defined(CONFIGURE_FILESYSTEM_FTPFS)
#include <rtems/ftpfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_FTPFS \
{ RTEMS_FILESYSTEM_TYPE_FTPFS, rtems_ftpfs_initialize }
#endif
/**
* TFTPFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \
defined(CONFIGURE_FILESYSTEM_TFTPFS)
#include <rtems/tftp.h>
#define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS \
{ RTEMS_FILESYSTEM_TYPE_TFTPFS, rtems_tftpfs_initialize }
#endif
/**
* NFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFS) && \
defined(CONFIGURE_FILESYSTEM_NFS)
#include <librtemsNfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_NFS \
{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfs_initialize }
#endif
/**
* DOSFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \
defined(CONFIGURE_FILESYSTEM_DOSFS)
#include <rtems/dosfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_DOSFS \
{ RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize }
#endif
/**
* RFS
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \
defined(CONFIGURE_FILESYSTEM_RFS)
#include <rtems/rtems-rfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_RFS \
{ RTEMS_FILESYSTEM_TYPE_RFS, rtems_rfs_rtems_initialise }
#endif
/**
* JFFS2
*/
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_JFFS2) && \
defined(CONFIGURE_FILESYSTEM_JFFS2)
#include <rtems/jffs2.h>
#define CONFIGURE_FILESYSTEM_ENTRY_JFFS2 \
{ RTEMS_FILESYSTEM_TYPE_JFFS2, rtems_jffs2_initialize }
#endif
#ifdef CONFIGURE_INIT
/**
* DEVFS variables.
*
* The number of individual devices that may be registered
* in the system or the CONFIGURE_MAXIMUM_DEVICES variable
* is defaulted to 4 when a filesystem is enabled, unless
* the bsp overwrides this. In which case the value is set
* to BSP_MAXIMUM_DEVICES.
*/
#ifdef CONFIGURE_FILESYSTEM_DEVFS
#ifndef CONFIGURE_MAXIMUM_DEVICES
#if defined(BSP_MAXIMUM_DEVICES)
#define CONFIGURE_MAXIMUM_DEVICES BSP_MAXIMUM_DEVICES
#else
#define CONFIGURE_MAXIMUM_DEVICES 4
#endif
#endif
#include <rtems/devfs.h>
#endif
/**
* Table termination record.
*/
#define CONFIGURE_FILESYSTEM_NULL { NULL, NULL }
#ifndef RTEMS_SCHEDSIM
#if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) && \
!defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
int imfs_rq_memfile_bytes_per_block =
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
#endif
/**
* The default file system table. Must be terminated with the NULL entry if
* you provide your own.
*/
#ifndef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
const rtems_filesystem_table_t rtems_filesystem_table[] = {
#if !defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
{ "/", IMFS_initialize_support },
#endif
#if defined(CONFIGURE_FILESYSTEM_IMFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS)
CONFIGURE_FILESYSTEM_ENTRY_IMFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_DEVFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS)
CONFIGURE_FILESYSTEM_ENTRY_DEVFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_TFTPFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS)
CONFIGURE_FILESYSTEM_ENTRY_TFTPFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_FTPFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS)
CONFIGURE_FILESYSTEM_ENTRY_FTPFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_NFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_NFS)
CONFIGURE_FILESYSTEM_ENTRY_NFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_DOSFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS)
CONFIGURE_FILESYSTEM_ENTRY_DOSFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_RFS) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_RFS)
CONFIGURE_FILESYSTEM_ENTRY_RFS,
#endif
#if defined(CONFIGURE_FILESYSTEM_JFFS2) && \
defined(CONFIGURE_FILESYSTEM_ENTRY_JFFS2)
CONFIGURE_FILESYSTEM_ENTRY_JFFS2,
#endif
CONFIGURE_FILESYSTEM_NULL
};
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
static devFS_node devFS_root_filesystem_nodes [CONFIGURE_MAXIMUM_DEVICES];
static const devFS_data devFS_root_filesystem_data = {
devFS_root_filesystem_nodes,
CONFIGURE_MAXIMUM_DEVICES
};
#else
static IMFS_fs_info_t _Configure_IMFS_fs_info;
static const rtems_filesystem_operations_table _Configure_IMFS_ops = {
rtems_filesystem_default_lock,
rtems_filesystem_default_unlock,
IMFS_eval_path,
#ifdef CONFIGURE_IMFS_DISABLE_LINK
rtems_filesystem_default_link,
#else
IMFS_link,
#endif
rtems_filesystem_default_are_nodes_equal,
#ifdef CONFIGURE_IMFS_DISABLE_MKNOD
rtems_filesystem_default_mknod,
#else
IMFS_mknod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_RMNOD
rtems_filesystem_default_rmnod,
#else
IMFS_rmnod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_CHMOD
rtems_filesystem_default_fchmod,
#else
IMFS_fchmod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_CHOWN
rtems_filesystem_default_chown,
#else
IMFS_chown,
#endif
IMFS_node_clone,
IMFS_node_free,
#ifdef CONFIGURE_IMFS_DISABLE_MOUNT
rtems_filesystem_default_mount,
#else
IMFS_mount,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_UNMOUNT
rtems_filesystem_default_unmount,
#else
IMFS_unmount,
#endif
rtems_filesystem_default_fsunmount,
#ifdef CONFIGURE_IMFS_DISABLE_UTIME
rtems_filesystem_default_utime,
#else
IMFS_utime,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_SYMLINK
rtems_filesystem_default_symlink,
#else
IMFS_symlink,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_READLINK
rtems_filesystem_default_readlink,
#else
IMFS_readlink,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_RENAME
rtems_filesystem_default_rename,
#else
IMFS_rename,
#endif
rtems_filesystem_default_statvfs
};
static const IMFS_mknod_controls _Configure_IMFS_mknod_controls = {
#ifdef CONFIGURE_IMFS_DISABLE_READDIR
&IMFS_mknod_control_dir_minimal,
#else
&IMFS_mknod_control_dir_default,
#endif
&IMFS_mknod_control_device,
#ifdef CONFIGURE_IMFS_DISABLE_MKNOD_FILE
&IMFS_mknod_control_enosys,
#else
&IMFS_mknod_control_memfile,
#endif
#ifdef CONFIGURE_IMFS_ENABLE_MKFIFO
&IMFS_mknod_control_fifo
#else
&IMFS_mknod_control_enosys
#endif
};
static const IMFS_mount_data _Configure_IMFS_mount_data = {
&_Configure_IMFS_fs_info,
&_Configure_IMFS_ops,
&_Configure_IMFS_mknod_controls
};
#endif
const rtems_filesystem_mount_configuration
rtems_filesystem_root_configuration = {
NULL,
NULL,
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
RTEMS_FILESYSTEM_TYPE_DEVFS,
#else
"/",
#endif
RTEMS_FILESYSTEM_READ_WRITE,
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
&devFS_root_filesystem_data
#else
&_Configure_IMFS_mount_data
#endif
};
#endif
#endif
#endif
/**@}*/ /* end of file system group */
/**
* @brief Maximum priority configuration.
*
@@ -2591,18 +2157,5 @@ struct _reent *__getreent(void)
#endif
#endif
/*
* IMFS block size for in memory files (memfiles) must be a power of
* two between 16 and 512 inclusive.
*/
#if ((CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 16) && \
(CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 32) && \
(CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 64) && \
(CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 128) && \
(CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 256) && \
(CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 512))
#error "IMFS Memfile block size must be a power of 2 between 16 and 512"
#endif
#endif
/* end of include file */
+410
View File
@@ -0,0 +1,410 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/**
* @file
*
* @ingroup RTEMSApplicationConfiguration
*
* @brief Evaluate IO Library Configuration Options
*/
/*
* Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _RTEMS_CONFDEFS_LIBIO_H
#define _RTEMS_CONFDEFS_LIBIO_H
#ifndef __CONFIGURATION_TEMPLATE_h
#error "Do not include this file directly, use <rtems/confdefs.h> instead"
#endif
#ifdef CONFIGURE_INIT
#include <rtems/confdefs/bsp.h>
#include <rtems/libio.h>
#include <rtems/sysinit.h>
#ifdef CONFIGURE_FILESYSTEM_ALL
#define CONFIGURE_FILESYSTEM_DEVFS
#define CONFIGURE_FILESYSTEM_DOSFS
#define CONFIGURE_FILESYSTEM_FTPFS
#define CONFIGURE_FILESYSTEM_IMFS
#define CONFIGURE_FILESYSTEM_JFFS2
#define CONFIGURE_FILESYSTEM_NFS
#define CONFIGURE_FILESYSTEM_RFS
#define CONFIGURE_FILESYSTEM_TFTPFS
#endif
#ifdef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
#define CONFIGURE_FILESYSTEM_DEVFS
#elif !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM)
#define _CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#endif
#ifdef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
#ifdef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
#error "CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM cannot be used together with CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM"
#endif
#define CONFIGURE_IMFS_DISABLE_CHMOD
#define CONFIGURE_IMFS_DISABLE_CHOWN
#define CONFIGURE_IMFS_DISABLE_LINK
#define CONFIGURE_IMFS_DISABLE_READLINK
#define CONFIGURE_IMFS_DISABLE_RENAME
#define CONFIGURE_IMFS_DISABLE_SYMLINK
#define CONFIGURE_IMFS_DISABLE_UNMOUNT
#define CONFIGURE_IMFS_DISABLE_UTIME
#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"
#endif
#ifdef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM"
#endif
#ifdef CONFIGURE_FILESYSTEM_DEVFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_DEVFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_DOSFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_DOSFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_FTPFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_FTPFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_IMFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_IMFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_JFFS2
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_JFFS2"
#endif
#ifdef CONFIGURE_FILESYSTEM_NFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_NFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_RFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_RFS"
#endif
#ifdef CONFIGURE_FILESYSTEM_TFTPFS
#error "CONFIGURE_APPLICATION_DISABLE_FILESYSTEM cannot be used together with CONFIGURE_FILESYSTEM_TFTPFS"
#endif
#else
#define _CONFIGURE_FILESYSTEM_INITIALIZE
#endif
#ifdef CONFIGURE_FILESYSTEM_DEVFS
#include <rtems/devfs.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_DOSFS
#include <rtems/dosfs.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_FTPFS
#include <rtems/ftpfs.h>
#endif
#if defined(CONFIGURE_FILESYSTEM_IMFS) \
|| defined(_CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM)
#include <rtems/imfs.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_JFFS2
#include <rtems/jffs2.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_NFS
#include <librtemsNfs.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_RFS
#include <rtems/rtems-rfs.h>
#endif
#ifdef CONFIGURE_FILESYSTEM_TFTPFS
#include <rtems/tftp.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
#ifndef CONFIGURE_MAXIMUM_DEVICES
#ifdef BSP_MAXIMUM_DEVICES
#define CONFIGURE_MAXIMUM_DEVICES BSP_MAXIMUM_DEVICES
#else
#define CONFIGURE_MAXIMUM_DEVICES 4
#endif
#endif
static devFS_node devFS_root_filesystem_nodes[ CONFIGURE_MAXIMUM_DEVICES ];
static const devFS_data _Filesystem_Root_data = {
devFS_root_filesystem_nodes,
CONFIGURE_MAXIMUM_DEVICES
};
#define _CONFIGURE_FILESYSTEM_ROOT_TYPE RTEMS_FILESYSTEM_TYPE_DEVFS
#endif /* CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM */
#ifdef _CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#ifndef CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
#define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK \
IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
#endif
#if CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 16 && \
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 32 && \
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 64 && \
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 128 && \
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 256 && \
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK != 512
#error "CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK must be a power of two between 16 and 512"
#endif
int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
static IMFS_fs_info_t _IMFS_fs_info;
static const rtems_filesystem_operations_table _IMFS_ops = {
rtems_filesystem_default_lock,
rtems_filesystem_default_unlock,
IMFS_eval_path,
#ifdef CONFIGURE_IMFS_DISABLE_LINK
rtems_filesystem_default_link,
#else
IMFS_link,
#endif
rtems_filesystem_default_are_nodes_equal,
#ifdef CONFIGURE_IMFS_DISABLE_MKNOD
rtems_filesystem_default_mknod,
#else
IMFS_mknod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_RMNOD
rtems_filesystem_default_rmnod,
#else
IMFS_rmnod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_CHMOD
rtems_filesystem_default_fchmod,
#else
IMFS_fchmod,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_CHOWN
rtems_filesystem_default_chown,
#else
IMFS_chown,
#endif
IMFS_node_clone,
IMFS_node_free,
#ifdef CONFIGURE_IMFS_DISABLE_MOUNT
rtems_filesystem_default_mount,
#else
IMFS_mount,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_UNMOUNT
rtems_filesystem_default_unmount,
#else
IMFS_unmount,
#endif
rtems_filesystem_default_fsunmount,
#ifdef CONFIGURE_IMFS_DISABLE_UTIME
rtems_filesystem_default_utime,
#else
IMFS_utime,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_SYMLINK
rtems_filesystem_default_symlink,
#else
IMFS_symlink,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_READLINK
rtems_filesystem_default_readlink,
#else
IMFS_readlink,
#endif
#ifdef CONFIGURE_IMFS_DISABLE_RENAME
rtems_filesystem_default_rename,
#else
IMFS_rename,
#endif
rtems_filesystem_default_statvfs
};
static const IMFS_mknod_controls _IMFS_mknod_controls = {
#ifdef CONFIGURE_IMFS_DISABLE_READDIR
&IMFS_mknod_control_dir_minimal,
#else
&IMFS_mknod_control_dir_default,
#endif
&IMFS_mknod_control_device,
#ifdef CONFIGURE_IMFS_DISABLE_MKNOD_FILE
&IMFS_mknod_control_enosys,
#else
&IMFS_mknod_control_memfile,
#endif
#ifdef CONFIGURE_IMFS_ENABLE_MKFIFO
&IMFS_mknod_control_fifo
#else
&IMFS_mknod_control_enosys
#endif
};
static const IMFS_mount_data _Filesystem_Root_data = {
&_IMFS_fs_info,
&_IMFS_ops,
&_IMFS_mknod_controls
};
#define _CONFIGURE_FILESYSTEM_ROOT_TYPE "/"
#endif /* _CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM */
#ifdef _CONFIGURE_FILESYSTEM_INITIALIZE
#if defined(CONFIGURE_FILESYSTEM_DEVFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS)
#define CONFIGURE_FILESYSTEM_ENTRY_DEVFS \
{ RTEMS_FILESYSTEM_TYPE_DEVFS, devFS_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_DOSFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS)
#define CONFIGURE_FILESYSTEM_ENTRY_DOSFS \
{ RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_FTPFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS)
#define CONFIGURE_FILESYSTEM_ENTRY_FTPFS \
{ RTEMS_FILESYSTEM_TYPE_FTPFS, rtems_ftpfs_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_IMFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS)
#define CONFIGURE_FILESYSTEM_ENTRY_IMFS \
{ RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_JFFS2) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_JFFS2)
#define CONFIGURE_FILESYSTEM_ENTRY_JFFS2 \
{ RTEMS_FILESYSTEM_TYPE_JFFS2, rtems_jffs2_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_NFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_NFS)
#define CONFIGURE_FILESYSTEM_ENTRY_NFS \
{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfs_initialize }
#endif
#if defined(CONFIGURE_FILESYSTEM_RFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS)
#define CONFIGURE_FILESYSTEM_ENTRY_RFS \
{ RTEMS_FILESYSTEM_TYPE_RFS, rtems_rfs_rtems_initialise }
#endif
#if defined(CONFIGURE_FILESYSTEM_TFTPFS) \
&& !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS)
#define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS \
{ RTEMS_FILESYSTEM_TYPE_TFTPFS, rtems_tftpfs_initialize }
#endif
const rtems_filesystem_table_t rtems_filesystem_table[] = {
#ifdef _CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
{ "/", IMFS_initialize_support },
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_DEVFS
CONFIGURE_FILESYSTEM_ENTRY_DEVFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_DOSFS
CONFIGURE_FILESYSTEM_ENTRY_DOSFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_FTPFS
CONFIGURE_FILESYSTEM_ENTRY_FTPFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_IMFS
CONFIGURE_FILESYSTEM_ENTRY_IMFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_JFFS2
CONFIGURE_FILESYSTEM_ENTRY_JFFS2,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_NFS
CONFIGURE_FILESYSTEM_ENTRY_NFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_RFS
CONFIGURE_FILESYSTEM_ENTRY_RFS,
#endif
#ifdef CONFIGURE_FILESYSTEM_ENTRY_TFTPFS
CONFIGURE_FILESYSTEM_ENTRY_TFTPFS,
#endif
{ NULL, NULL }
};
const rtems_filesystem_mount_configuration
rtems_filesystem_root_configuration = {
NULL,
NULL,
_CONFIGURE_FILESYSTEM_ROOT_TYPE,
RTEMS_FILESYSTEM_READ_WRITE,
&_Filesystem_Root_data
};
RTEMS_SYSINIT_ITEM(
rtems_filesystem_initialize,
RTEMS_SYSINIT_ROOT_FILESYSTEM,
RTEMS_SYSINIT_ORDER_MIDDLE
);
#endif /* _CONFIGURE_FILESYSTEM_INITIALIZE */
#ifndef CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
#define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 3
#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
#endif /* CONFIGURE_INIT */
#endif /* _RTEMS_CONFDEFS_LIBIO_H */