Is there any guidance for the (unexpected) user using the miniIMFS? The configuration parameter just went away.
Can it be an error in confdefs.h? On 2/12/2015 2:48 PM, Sebastian Huber wrote: > Module: rtems > Branch: master > Commit: a9df9169882c564af6714bbf121c278092d3c51c > Changeset: > http://git.rtems.org/rtems/commit/?id=a9df9169882c564af6714bbf121c278092d3c51c > > Author: Sebastian Huber <sebastian.hu...@embedded-brains.de> > Date: Sun Feb 8 19:43:09 2015 +0100 > > IMFS: Add fine grained configuration > > Remove miniIMFS. Statically initialize the root IMFS. > > Add configuration options to disable individual > features of the root IMFS, e.g. > o CONFIGURE_IMFS_DISABLE_CHOWN, > o CONFIGURE_IMFS_DISABLE_FCHMOD, > o CONFIGURE_IMFS_DISABLE_LINK, > o CONFIGURE_IMFS_DISABLE_MKNOD, > o CONFIGURE_IMFS_DISABLE_MOUNT, > o CONFIGURE_IMFS_DISABLE_READLINK, > o CONFIGURE_IMFS_DISABLE_RENAME, > o CONFIGURE_IMFS_DISABLE_RMNOD, > o CONFIGURE_IMFS_DISABLE_SYMLINK, > o CONFIGURE_IMFS_DISABLE_UNMOUNT, and > o CONFIGURE_IMFS_DISABLE_UTIME. > > --- > > .../lib/libbsp/powerpc/beatnik/irq/irq_test_app.c | 1 - > cpukit/libfs/Makefile.am | 4 +- > cpukit/libfs/src/imfs/fifoimfs_init.c | 78 ----- > cpukit/libfs/src/imfs/imfs.h | 21 +- > cpukit/libfs/src/imfs/imfs_init.c | 2 +- > cpukit/libfs/src/imfs/imfs_load_tar.c | 5 +- > cpukit/libfs/src/imfs/imfs_make_generic_node.c | 10 - > cpukit/libfs/src/imfs/miniimfs_init.c | 74 ----- > cpukit/sapi/include/confdefs.h | 184 +++++++----- > doc/user/conf.t | 320 > ++++++++++++++++++--- > testsuites/fstests/Makefile.am | 2 + > testsuites/fstests/configure.ac | 2 + > testsuites/fstests/fsimfsconfig01/Makefile.am | 19 ++ > .../fstests/fsimfsconfig01/fsimfsconfig01.doc | 11 + > .../fstests/fsimfsconfig01/fsimfsconfig01.scn | 2 + > testsuites/fstests/fsimfsconfig01/init.c | 139 +++++++++ > testsuites/fstests/fsimfsconfig02/Makefile.am | 19 ++ > .../fstests/fsimfsconfig02/fsimfsconfig02.doc | 11 + > .../fstests/fsimfsconfig02/fsimfsconfig02.scn | 2 + > testsuites/fstests/fsimfsconfig02/init.c | 84 ++++++ > testsuites/fstests/fsimfsgeneric01/init.c | 16 +- > testsuites/fstests/mimfs_support/fs_support.c | 2 + > testsuites/libtests/tar03/init.c | 9 - > testsuites/psxtests/psxfile01/main.c | 2 + > testsuites/psxtests/psximfs02/init.c | 2 + > testsuites/psxtests/psxmount/main.c | 2 + > testsuites/psxtests/psxreaddir/main.c | 2 + > testsuites/psxtests/psxstat/main.c | 2 + > testsuites/samples/iostream/system.h | 3 - > testsuites/sptests/sp47/init.c | 2 - > testsuites/sptests/sp48/init.c | 2 - > 31 files changed, 728 insertions(+), 306 deletions(-) > > diff --git a/c/src/lib/libbsp/powerpc/beatnik/irq/irq_test_app.c > b/c/src/lib/libbsp/powerpc/beatnik/irq/irq_test_app.c > index 72a43fa..cb9ff14 100644 > --- a/c/src/lib/libbsp/powerpc/beatnik/irq/irq_test_app.c > +++ b/c/src/lib/libbsp/powerpc/beatnik/irq/irq_test_app.c > @@ -36,7 +36,6 @@ rtems_task Init( > #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > #define CONFIGURE_MAXIMUM_TASKS 1 > #define CONFIGURE_RTEMS_INIT_TASKS_TABLE > -#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > #include <confdefs.h> > > #include <stdio.h> > diff --git a/cpukit/libfs/Makefile.am b/cpukit/libfs/Makefile.am > index 3c454e7..802dfdb 100644 > --- a/cpukit/libfs/Makefile.am > +++ b/cpukit/libfs/Makefile.am > @@ -41,7 +41,7 @@ noinst_LIBRARIES += libimfs.a > libimfs_a_SOURCES = > > libimfs_a_SOURCES += src/imfs/deviceio.c \ > - src/imfs/fifoimfs_init.c src/imfs/imfs_chown.c src/imfs/imfs_config.c \ > + src/imfs/imfs_chown.c src/imfs/imfs_config.c \ > src/imfs/imfs_creat.c src/imfs/imfs_directory.c \ > src/imfs/imfs_eval.c src/imfs/imfs_fchmod.c \ > src/imfs/imfs_fifo.c \ > @@ -56,7 +56,7 @@ libimfs_a_SOURCES += src/imfs/deviceio.c \ > src/imfs/imfs_rename.c src/imfs/imfs_rmnod.c \ > src/imfs/imfs_stat.c src/imfs/imfs_stat_file.c src/imfs/imfs_symlink.c \ > src/imfs/imfs_unmount.c src/imfs/imfs_utime.c src/imfs/ioman.c \ > - src/imfs/imfs_memfile.c src/imfs/miniimfs_init.c src/imfs/imfs.h > + src/imfs/imfs_memfile.c src/imfs/imfs.h > > # POSIX FIFO/pipe > libimfs_a_SOURCES += src/pipe/fifo.c src/pipe/pipe.c src/pipe/pipe.h > diff --git a/cpukit/libfs/src/imfs/fifoimfs_init.c > b/cpukit/libfs/src/imfs/fifoimfs_init.c > deleted file mode 100644 > index 4063557..0000000 > --- a/cpukit/libfs/src/imfs/fifoimfs_init.c > +++ /dev/null > @@ -1,78 +0,0 @@ > -/** > - * @file > - * > - * @ingroup LibFSIMFS > - * > - * @brief IMFS without fifo support initialization. > - */ > - > -/* > - * Copyright (c) 2010 > - * embedded brains GmbH > - * Obere Lagerstr. 30 > - * D-82178 Puchheim > - * Germany > - * <rt...@embedded-brains.de> > - * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > - */ > - > -#if HAVE_CONFIG_H > - #include "config.h" > -#endif > - > -#include "imfs.h" > - > -#include <stdlib.h> > - > -#include <rtems/seterr.h> > - > -const rtems_filesystem_operations_table fifoIMFS_ops = { > - .lock_h = rtems_filesystem_default_lock, > - .unlock_h = rtems_filesystem_default_unlock, > - .eval_path_h = IMFS_eval_path, > - .link_h = IMFS_link, > - .are_nodes_equal_h = rtems_filesystem_default_are_nodes_equal, > - .mknod_h = IMFS_mknod, > - .rmnod_h = IMFS_rmnod, > - .fchmod_h = IMFS_fchmod, > - .chown_h = IMFS_chown, > - .clonenod_h = IMFS_node_clone, > - .freenod_h = IMFS_node_free, > - .mount_h = IMFS_mount, > - .unmount_h = IMFS_unmount, > - .fsunmount_me_h = IMFS_fsunmount, > - .utime_h = IMFS_utime, > - .symlink_h = IMFS_symlink, > - .readlink_h = IMFS_readlink, > - .rename_h = IMFS_rename, > - .statvfs_h = rtems_filesystem_default_statvfs > -}; > - > -static const IMFS_mknod_controls IMFS_fifo_mknod_controls = { > - .directory = &IMFS_mknod_control_directory, > - .device = &IMFS_mknod_control_device, > - .file = &IMFS_mknod_control_memfile, > - .fifo = &IMFS_mknod_control_fifo > -}; > - > -int fifoIMFS_initialize( > - rtems_filesystem_mount_table_entry_t *mt_entry, > - const void *data > -) > -{ > - IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) ); > - IMFS_mount_data mount_data = { > - .fs_info = fs_info, > - .ops = &fifoIMFS_ops, > - .mknod_controls = &IMFS_fifo_mknod_controls > - }; > - > - if ( fs_info == NULL ) { > - rtems_set_errno_and_return_minus_one( ENOMEM ); > - } > - > - return IMFS_initialize_support( mt_entry, &mount_data ); > -} > diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h > index 00fc179..c03257a 100644 > --- a/cpukit/libfs/src/imfs/imfs.h > +++ b/cpukit/libfs/src/imfs/imfs.h > @@ -391,10 +391,6 @@ extern const IMFS_node_control IMFS_node_control_linfile; > extern const IMFS_mknod_control IMFS_mknod_control_fifo; > extern const IMFS_mknod_control IMFS_mknod_control_enosys; > > -extern const rtems_filesystem_operations_table miniIMFS_ops; > -extern const rtems_filesystem_operations_table IMFS_ops; > -extern const rtems_filesystem_operations_table fifoIMFS_ops; > - > extern const rtems_filesystem_limits_and_options_t IMFS_LIMITS_AND_OPTIONS; > > /* > @@ -406,16 +402,6 @@ extern int IMFS_initialize( > const void *data > ); > > -extern int fifoIMFS_initialize( > - rtems_filesystem_mount_table_entry_t *mt_entry, > - const void *data > -); > - > -extern int miniIMFS_initialize( > - rtems_filesystem_mount_table_entry_t *mt_entry, > - const void *data > -); > - > extern int IMFS_initialize_support( > rtems_filesystem_mount_table_entry_t *mt_entry, > const void *data > @@ -586,9 +572,12 @@ extern IMFS_jnode_t *IMFS_create_node( > void *arg > ); > > -extern bool IMFS_is_imfs_instance( > +static inline bool IMFS_is_imfs_instance( > const rtems_filesystem_location_info_t *loc > -); > +) > +{ > + return loc->mt_entry->ops->clonenod_h == IMFS_node_clone; > +} > > /** @} */ > > diff --git a/cpukit/libfs/src/imfs/imfs_init.c > b/cpukit/libfs/src/imfs/imfs_init.c > index e82490f..bbab2cb 100644 > --- a/cpukit/libfs/src/imfs/imfs_init.c > +++ b/cpukit/libfs/src/imfs/imfs_init.c > @@ -25,7 +25,7 @@ > > #include <rtems/seterr.h> > > -const rtems_filesystem_operations_table IMFS_ops = { > +static const rtems_filesystem_operations_table IMFS_ops = { > .lock_h = rtems_filesystem_default_lock, > .unlock_h = rtems_filesystem_default_unlock, > .eval_path_h = IMFS_eval_path, > diff --git a/cpukit/libfs/src/imfs/imfs_load_tar.c > b/cpukit/libfs/src/imfs/imfs_load_tar.c > index d303cd2..7228978 100644 > --- a/cpukit/libfs/src/imfs/imfs_load_tar.c > +++ b/cpukit/libfs/src/imfs/imfs_load_tar.c > @@ -58,10 +58,7 @@ int rtems_tarfs_load( > RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE > ); > > - if ( > - rootloc.mt_entry->ops != &IMFS_ops > - && rootloc.mt_entry->ops != &fifoIMFS_ops > - ) { > + if ( !IMFS_is_imfs_instance( &rootloc ) ) { > rv = -1; > } > > diff --git a/cpukit/libfs/src/imfs/imfs_make_generic_node.c > b/cpukit/libfs/src/imfs/imfs_make_generic_node.c > index f302dda..aef21c9 100644 > --- a/cpukit/libfs/src/imfs/imfs_make_generic_node.c > +++ b/cpukit/libfs/src/imfs/imfs_make_generic_node.c > @@ -39,16 +39,6 @@ IMFS_jnode_t *IMFS_node_initialize_generic( > return node; > } > > -bool IMFS_is_imfs_instance( > - const rtems_filesystem_location_info_t *loc > -) > -{ > - const char *type = loc->mt_entry->type; > - > - return strcmp(type, RTEMS_FILESYSTEM_TYPE_IMFS) == 0 > - || strcmp(type, RTEMS_FILESYSTEM_TYPE_MINIIMFS) == 0; > -} > - > int IMFS_make_generic_node( > const char *path, > mode_t mode, > diff --git a/cpukit/libfs/src/imfs/miniimfs_init.c > b/cpukit/libfs/src/imfs/miniimfs_init.c > deleted file mode 100644 > index 7451c5e..0000000 > --- a/cpukit/libfs/src/imfs/miniimfs_init.c > +++ /dev/null > @@ -1,74 +0,0 @@ > -/** > - * @file > - * > - * @ingroup LibFSIMFS > - * > - * @brief Mini-IMFS initialization. > - */ > - > -/* > - * COPYRIGHT (c) 1989-1999. > - * On-Line Applications Research Corporation (OAR). > - * > - * The license and distribution terms for this file may be > - * found in the file LICENSE in this distribution or at > - * http://www.rtems.org/license/LICENSE. > - */ > - > -#if HAVE_CONFIG_H > - #include "config.h" > -#endif > - > -#include "imfs.h" > - > -#include <stdlib.h> > - > -#include <rtems/seterr.h> > - > -const rtems_filesystem_operations_table miniIMFS_ops = { > - .lock_h = rtems_filesystem_default_lock, > - .unlock_h = rtems_filesystem_default_unlock, > - .eval_path_h = IMFS_eval_path, > - .link_h = rtems_filesystem_default_link, > - .are_nodes_equal_h = rtems_filesystem_default_are_nodes_equal, > - .mknod_h = IMFS_mknod, > - .rmnod_h = IMFS_rmnod, > - .fchmod_h = rtems_filesystem_default_fchmod, > - .chown_h = rtems_filesystem_default_chown, > - .clonenod_h = IMFS_node_clone, > - .freenod_h = IMFS_node_free, > - .mount_h = IMFS_mount, > - .unmount_h = rtems_filesystem_default_unmount, > - .fsunmount_me_h = rtems_filesystem_default_fsunmount, > - .utime_h = rtems_filesystem_default_utime, > - .symlink_h = rtems_filesystem_default_symlink, > - .readlink_h = rtems_filesystem_default_readlink, > - .rename_h = rtems_filesystem_default_rename, > - .statvfs_h = rtems_filesystem_default_statvfs > -}; > - > -static const IMFS_mknod_controls IMFS_mini_mknod_controls = { > - .directory = &IMFS_mknod_control_directory, > - .device = &IMFS_mknod_control_device, > - .file = &IMFS_mknod_control_memfile, > - .fifo = &IMFS_mknod_control_enosys > -}; > - > -int miniIMFS_initialize( > - rtems_filesystem_mount_table_entry_t *mt_entry, > - const void *data > -) > -{ > - IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) ); > - IMFS_mount_data mount_data = { > - .fs_info = fs_info, > - .ops = &miniIMFS_ops, > - .mknod_controls = &IMFS_mini_mknod_controls > - }; > - > - if ( fs_info == NULL ) { > - rtems_set_errno_and_return_minus_one( ENOMEM ); > - } > - > - return IMFS_initialize_support( mt_entry, &mount_data ); > -} > diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h > index 211c6bc..6fb0951 100644 > --- a/cpukit/sapi/include/confdefs.h > +++ b/cpukit/sapi/include/confdefs.h > @@ -125,14 +125,6 @@ const rtems_libio_helper rtems_fs_init_helper = > #endif > #endif > > -/* > - * If the application disables the filesystem, they will not need > - * a mount table, so do not produce one. > - */ > -#ifdef CONFIGURE_APPLICATION_DISABLE_FILESYSTEM > - #define CONFIGURE_HAS_OWN_MOUNT_TABLE > -#endif > - > /** > * This macro defines the number of POSIX file descriptors allocated > * and managed by libio. These are the "integer" file descriptors that > @@ -257,7 +249,6 @@ const rtems_libio_helper rtems_fs_init_helper = > * Add file filesystems to the default filesystem table. > * > * List of available file systems. You can define as many as you like: > - * CONFIGURE_FILESYSTEM_MINIIMFS - MiniIMFS, use DEVFS now > * CONFIGURE_FILESYSTEM_IMFS - In Memory File System (IMFS) > * CONFIGURE_FILESYSTEM_DEVFS - Device File System (DSVFS) > * CONFIGURE_FILESYSTEM_TFTPFS - TFTP File System, networking enabled > @@ -271,10 +262,10 @@ const rtems_libio_helper rtems_fs_init_helper = > * > * - If nothing is defined the base file system is the IMFS. > * > - * - If CONFIGURE_APPLICATION_DISABLE_FILESYSTEM is defined all filesystem > - * are disabled by force and an empty DEVFS is created. > + * - If CONFIGURE_APPLICATION_DISABLE_FILESYSTEM is defined all > filesystems > + * are disabled by force. > * > - * - If CONFIGURE_USE_DEV_AS_BASE_FILESYSTEM is defined all filesystem > + * - If CONFIGURE_USE_DEV_AS_BASE_FILESYSTEM is defined all filesystems > * are disabled by force and DEVFS is defined. > */ > > @@ -285,7 +276,6 @@ const rtems_libio_helper rtems_fs_init_helper = > * been disabled. > */ > #ifdef CONFIGURE_FILESYSTEM_ALL > - #define CONFIGURE_FILESYSTEM_MINIIMFS > #define CONFIGURE_FILESYSTEM_IMFS > #define CONFIGURE_FILESYSTEM_DEVFS > #define CONFIGURE_FILESYSTEM_TFTPFS > @@ -301,23 +291,19 @@ const rtems_libio_helper rtems_fs_init_helper = > * configured other filesystem parameters. > */ > #if defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) > - #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) || \ > - defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM) > - #error "Filesystem disabled but a base filesystem configured." > + #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) > + #error "Filesystem disabled and a base filesystem configured." > #endif > > - #if defined(CONFIGURE_FILESYSTEM_MINIIMFS) || \ > - 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 "Configured filesystems but root filesystem was not IMFS!" > - #error "Filesystems could be disabled, DEVFS is root, or" > - #error " miniIMFS is root!" > + #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 > > @@ -328,10 +314,6 @@ const rtems_libio_helper rtems_fs_init_helper = > #if !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) > #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) > #define CONFIGURE_FILESYSTEM_DEVFS > - #elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM) > - #define CONFIGURE_FILESYSTEM_MINIIMFS > - #elif !defined(CONFIGURE_FILESYSTEM_IMFS) > - #define CONFIGURE_FILESYSTEM_IMFS > #endif > #endif > > @@ -355,28 +337,12 @@ const rtems_libio_helper rtems_fs_init_helper = > #endif > > /** > - * This defines the miniIMFS file system table entry. > - */ > -#if !defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) && \ > - defined(CONFIGURE_FILESYSTEM_MINIIMFS) > - #define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS \ > - { RTEMS_FILESYSTEM_TYPE_MINIIMFS, miniIMFS_initialize } > -#endif > -#endif > - > -#ifndef RTEMS_SCHEDSIM > -/** > * This defines the IMFS file system table entry. > */ > #if !defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) && \ > - defined(CONFIGURE_FILESYSTEM_IMFS) > - #if CONFIGURE_MAXIMUM_FIFOS > 0 || CONFIGURE_MAXIMUM_PIPES > 0 > - #define CONFIGURE_FILESYSTEM_ENTRY_IMFS \ > - { RTEMS_FILESYSTEM_TYPE_IMFS, fifoIMFS_initialize } > - #else > - #define CONFIGURE_FILESYSTEM_ENTRY_IMFS \ > - { RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize } > - #endif > + defined(CONFIGURE_FILESYSTEM_IMFS) > + #define CONFIGURE_FILESYSTEM_ENTRY_IMFS \ > + { RTEMS_FILESYSTEM_TYPE_IMFS, IMFS_initialize } > #endif > #endif > > @@ -506,28 +472,27 @@ const rtems_libio_helper rtems_fs_init_helper = > #include <rtems/devfs.h> > #endif > > -#ifndef RTEMS_SCHEDSIM > - #if defined(CONFIGURE_FILESYSTEM_IMFS) || \ > - defined(CONFIGURE_FILESYSTEM_MINIIMFS) > - int imfs_rq_memfile_bytes_per_block = > CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK; > - #endif > -#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_HAS_OWN_FILESYSTEM_TABLE > + #if !defined(CONFIGURE_HAS_OWN_FILESYSTEM_TABLE) && \ > + !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) > const rtems_filesystem_table_t rtems_filesystem_table[] = { > - #if defined(CONFIGURE_FILESYSTEM_MINIIMFS) && \ > - defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) > - CONFIGURE_FILESYSTEM_ENTRY_miniIMFS, > + #if !defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) > + { "/", IMFS_initialize_support }, > #endif > #if defined(CONFIGURE_FILESYSTEM_IMFS) && \ > defined(CONFIGURE_FILESYSTEM_ENTRY_IMFS) > @@ -565,30 +530,115 @@ const rtems_libio_helper rtems_fs_init_helper = > }; > #endif > > - #ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE > + #if !defined(CONFIGURE_HAS_OWN_MOUNT_TABLE) && \ > + !defined(CONFIGURE_APPLICATION_DISABLE_FILESYSTEM) > #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_FCHMOD > + 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 = { > + &IMFS_mknod_control_directory, > + &IMFS_mknod_control_device, > + &IMFS_mknod_control_memfile, > + #if CONFIGURE_MAXIMUM_FIFOS > 0 || CONFIGURE_MAXIMUM_PIPES > 0 > + &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, > - #elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM) > - RTEMS_FILESYSTEM_TYPE_MINIIMFS, > #else > - RTEMS_FILESYSTEM_TYPE_IMFS, > + "/", > #endif > RTEMS_FILESYSTEM_READ_WRITE, > #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) > &devFS_root_filesystem_data > #else > - NULL > + &_Configure_IMFS_mount_data > #endif > }; > #endif > diff --git a/doc/user/conf.t b/doc/user/conf.t > index 7afe09c..fd986e2 100644 > --- a/doc/user/conf.t > +++ b/doc/user/conf.t > @@ -2577,40 +2577,6 @@ None. > @c XXX - Please provide an example > > @c > -@c === CONFIGURE_USE_MINIIMFS_AS_BASE_SYSTEM === > -@c > -@subsection Configure miniIMFS as Root File System > - > -@findex CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > - > -@table @b > -@item CONSTANT: > -@code{CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM} > - > -@item DATA TYPE: > -Boolean feature macro. > - > -@item RANGE: > -Defined or undefined. > - > -@item DEFAULT VALUE: > -This is not defined by default. If no other root file system > -configuration parameters are specified, the IMFS will be used as the > -root file system. > - > -@end table > - > -@subheading DESCRIPTION: > -This configuration parameter is defined if the application wishes to use > -the reduced functionality miniIMFS as the root filesystem. This reduced > -version of the full IMFS does not include the capability to mount other > -file system types, but it does support directories, device nodes, and > -symbolic links. > - > -@subheading NOTES: > -The miniIMFS nodes and is smaller in executable code size than the full IMFS. > - > -@c > @c === CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM === > @c > @subsection Configure devFS as Root File System > @@ -2711,6 +2677,292 @@ infrastructure necessary to support @code{printf()}. > None. > > @c > +@c === CONFIGURE_IMFS_DISABLE_CHOWN === > +@c > +@subsection Disable change owner support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_CHOWN > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_CHOWN} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to change the > +owner is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_FCHMOD === > +@c > +@subsection Disable change mode support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_FCHMOD > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_FCHMOD} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to change the > +mode is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_UTIME === > +@c > +@subsection Disable change times support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_UTIME > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_UTIME} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to change > times > +is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_LINK === > +@c > +@subsection Disable create hard link support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_LINK > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_LINK} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to create hard > +links is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_SYMLINK === > +@c > +@subsection Disable create symbolic link support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_SYMLINK > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_SYMLINK} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to create > +symbolic links is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_READLINK === > +@c > +@subsection Disable read symbolic link support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_READLINK > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_READLINK} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to read > symbolic > +links is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_RENAME === > +@c > +@subsection Disable rename support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_RENAME > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_RENAME} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to rename > nodes > +is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_MOUNT === > +@c > +@subsection Disable mount support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_MOUNT > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_MOUNT} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to mount other > +file systems is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_UNMOUNT === > +@c > +@subsection Disable unmount support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_UNMOUNT > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_UNMOUNT} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to unmount > file > +systems is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_MKNOD === > +@c > +@subsection Disable make nodes support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_MKNOD > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_MKNOD} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to make > +directories, devices, regular files and FIFOs is disabled in the root IMFS. > + > +@c > +@c === CONFIGURE_IMFS_DISABLE_RMNOD === > +@c > +@subsection Disable remove nodes support of root IMFS > + > +@findex CONFIGURE_IMFS_DISABLE_RMNOD > + > +@table @b > +@item CONSTANT: > +@code{CONFIGURE_IMFS_DISABLE_RMNOD} > + > +@item DATA TYPE: > +Boolean feature macro. > + > +@item RANGE: > +Defined or undefined. > + > +@item DEFAULT VALUE: > +This is not defined by default. > + > +@end table > + > +@subheading DESCRIPTION: > +In case this configuration option is defined, then the support to remove > nodes > +is disabled in the root IMFS. > + > +@c > @c === Block Device Cache Configuration === > @c > @section Block Device Cache Configuration > diff --git a/testsuites/fstests/Makefile.am b/testsuites/fstests/Makefile.am > index 404966c..6b01b20 100644 > --- a/testsuites/fstests/Makefile.am > +++ b/testsuites/fstests/Makefile.am > @@ -1,6 +1,8 @@ > ACLOCAL_AMFLAGS = -I ../aclocal > > _SUBDIRS = > +_SUBDIRS += fsimfsconfig02 > +_SUBDIRS += fsimfsconfig01 > _SUBDIRS += fsdosfsname01 > _SUBDIRS += fsdosfswrite01 > _SUBDIRS += fsdosfsformat01 > diff --git a/testsuites/fstests/configure.ac b/testsuites/fstests/configure.ac > index fca2fdf..87b8961 100644 > --- a/testsuites/fstests/configure.ac > +++ b/testsuites/fstests/configure.ac > @@ -77,6 +77,8 @@ AC_CHECK_SIZEOF([blkcnt_t]) > > # Explicitly list all Makefiles here > AC_CONFIG_FILES([Makefile > +fsimfsconfig02/Makefile > +fsimfsconfig01/Makefile > fsdosfsname01/Makefile > fsdosfswrite01/Makefile > fsdosfsformat01/Makefile > diff --git a/testsuites/fstests/fsimfsconfig01/Makefile.am > b/testsuites/fstests/fsimfsconfig01/Makefile.am > new file mode 100644 > index 0000000..0787dbe > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig01/Makefile.am > @@ -0,0 +1,19 @@ > +rtems_tests_PROGRAMS = fsimfsconfig01 > +fsimfsconfig01_SOURCES = init.c > + > +dist_rtems_tests_DATA = fsimfsconfig01.scn fsimfsconfig01.doc > + > +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg > +include $(top_srcdir)/../automake/compile.am > +include $(top_srcdir)/../automake/leaf.am > + > +AM_CPPFLAGS += -I$(top_srcdir)/../support/include > + > +LINK_OBJS = $(fsimfsconfig01_OBJECTS) > +LINK_LIBS = $(fsimfsconfig01_LDLIBS) > + > +fsimfsconfig01$(EXEEXT): $(fsimfsconfig01_OBJECTS) > $(fsimfsconfig01_DEPENDENCIES) > + @rm -f fsimfsconfig01$(EXEEXT) > + $(make-exe) > + > +include $(top_srcdir)/../automake/local.am > diff --git a/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.doc > b/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.doc > new file mode 100644 > index 0000000..d243512 > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.doc > @@ -0,0 +1,11 @@ > +This file describes the directives and concepts tested by this test set. > + > +test set name: fsimfsconfig01 > + > +directives: > + > + TBD > + > +concepts: > + > + - Ensure that the IMFS configuration defines work. > diff --git a/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.scn > b/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.scn > new file mode 100644 > index 0000000..145048b > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig01/fsimfsconfig01.scn > @@ -0,0 +1,2 @@ > +*** BEGIN OF TEST FSIMFSCONFIG 1 *** > +*** END OF TEST FSIMFSCONFIG 1 *** > diff --git a/testsuites/fstests/fsimfsconfig01/init.c > b/testsuites/fstests/fsimfsconfig01/init.c > new file mode 100644 > index 0000000..3f842c0 > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig01/init.c > @@ -0,0 +1,139 @@ > +/* > + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. > + * > + * embedded brains GmbH > + * Dornierstr. 4 > + * 82178 Puchheim > + * Germany > + * <rt...@embedded-brains.de> > + * > + * The license and distribution terms for this file may be > + * found in the file LICENSE in this distribution or at > + * http://www.rtems.org/license/LICENSE. > + */ > + > +#ifdef HAVE_CONFIG_H > + #include "config.h" > +#endif > + > +#include "tmacros.h" > + > +#include <sys/stat.h> > +#include <errno.h> > +#include <stdio.h> > +#include <unistd.h> > +#include <utime.h> > + > +#include <rtems/imfs.h> > +#include <rtems/libio.h> > + > +const char rtems_test_name[] = "FSIMFSCONFIG 1"; > + > +static const IMFS_node_control node_control = IMFS_GENERIC_INITIALIZER( > + &rtems_filesystem_handlers_default, > + IMFS_node_initialize_generic, > + IMFS_node_destroy_default > +); > + > +static void Init(rtems_task_argument arg) > +{ > + struct utimbuf times; > + const char *generic = "generic"; > + const char *mnt = "mnt"; > + int rv; > + > + TEST_BEGIN(); > + > + rv = IMFS_make_generic_node( > + generic, > + S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO, > + &node_control, > + NULL > + ); > + rtems_test_assert(rv == 0); > + > + errno = 0; > + rv = chown(generic, 0, 0); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = chmod(generic, 0); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = link(generic, "link"); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + rv = mkdir(mnt, S_IRWXU); > + rtems_test_assert(rv == 0); > + > + errno = 0; > + rv = mount( > + "", > + mnt, > + RTEMS_FILESYSTEM_TYPE_IMFS, > + RTEMS_FILESYSTEM_READ_ONLY, > + NULL > + ); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = rename(generic, "new"); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = unlink(generic); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = symlink(generic, "link"); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + errno = 0; > + rv = utime(generic, ×); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + TEST_END(); > + rtems_test_exit(0); > +} > + > +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER > +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER > + > +#define CONFIGURE_FILESYSTEM_IMFS > + > +#define CONFIGURE_IMFS_DISABLE_CHOWN > +#define CONFIGURE_IMFS_DISABLE_FCHMOD > +#define CONFIGURE_IMFS_DISABLE_LINK > + > +#if 0 > +/* > + * This would lead to a fatal error since rtems_filesystem_initialize() > creates > + * a "/dev" directory. > + */ > +#define CONFIGURE_IMFS_DISABLE_MKNOD > +#endif > + > +#define CONFIGURE_IMFS_DISABLE_MOUNT > +#define CONFIGURE_IMFS_DISABLE_RENAME > +#define CONFIGURE_IMFS_DISABLE_RMNOD > +#define CONFIGURE_IMFS_DISABLE_SYMLINK > +#define CONFIGURE_IMFS_DISABLE_UTIME > + > +#define CONFIGURE_MAXIMUM_TASKS 1 > + > +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > + > +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE > + > +#define CONFIGURE_INIT > + > +#include <rtems/confdefs.h> > diff --git a/testsuites/fstests/fsimfsconfig02/Makefile.am > b/testsuites/fstests/fsimfsconfig02/Makefile.am > new file mode 100644 > index 0000000..9567eea > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig02/Makefile.am > @@ -0,0 +1,19 @@ > +rtems_tests_PROGRAMS = fsimfsconfig02 > +fsimfsconfig02_SOURCES = init.c > + > +dist_rtems_tests_DATA = fsimfsconfig02.scn fsimfsconfig02.doc > + > +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg > +include $(top_srcdir)/../automake/compile.am > +include $(top_srcdir)/../automake/leaf.am > + > +AM_CPPFLAGS += -I$(top_srcdir)/../support/include > + > +LINK_OBJS = $(fsimfsconfig02_OBJECTS) > +LINK_LIBS = $(fsimfsconfig02_LDLIBS) > + > +fsimfsconfig02$(EXEEXT): $(fsimfsconfig02_OBJECTS) > $(fsimfsconfig02_DEPENDENCIES) > + @rm -f fsimfsconfig02$(EXEEXT) > + $(make-exe) > + > +include $(top_srcdir)/../automake/local.am > diff --git a/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.doc > b/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.doc > new file mode 100644 > index 0000000..3693513 > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.doc > @@ -0,0 +1,11 @@ > +This file describes the directives and concepts tested by this test set. > + > +test set name: fsimfsconfig02 > + > +directives: > + > + TBD > + > +concepts: > + > + - Ensure that the IMFS configuration defines work. > diff --git a/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.scn > b/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.scn > new file mode 100644 > index 0000000..c89a4a2 > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig02/fsimfsconfig02.scn > @@ -0,0 +1,2 @@ > +*** BEGIN OF TEST FSIMFSCONFIG 2 *** > +*** END OF TEST FSIMFSCONFIG 2 *** > diff --git a/testsuites/fstests/fsimfsconfig02/init.c > b/testsuites/fstests/fsimfsconfig02/init.c > new file mode 100644 > index 0000000..35f9c83 > --- /dev/null > +++ b/testsuites/fstests/fsimfsconfig02/init.c > @@ -0,0 +1,84 @@ > +/* > + * Copyright (c) 2015 embedded brains GmbH. All rights reserved. > + * > + * embedded brains GmbH > + * Dornierstr. 4 > + * 82178 Puchheim > + * Germany > + * <rt...@embedded-brains.de> > + * > + * The license and distribution terms for this file may be > + * found in the file LICENSE in this distribution or at > + * http://www.rtems.org/license/LICENSE. > + */ > + > +#ifdef HAVE_CONFIG_H > + #include "config.h" > +#endif > + > +#include "tmacros.h" > + > +#include <sys/stat.h> > +#include <errno.h> > +#include <unistd.h> > + > +#include <rtems/imfs.h> > +#include <rtems/libio.h> > + > +const char rtems_test_name[] = "FSIMFSCONFIG 2"; > + > +static void Init(rtems_task_argument arg) > +{ > + const char *mnt = "mnt"; > + const char *link = "link"; > + char buf[1]; > + int rv; > + > + TEST_BEGIN(); > + > + rv = mkdir(mnt, S_IRWXU); > + rtems_test_assert(rv == 0); > + > + rv = mount( > + "", > + mnt, > + RTEMS_FILESYSTEM_TYPE_IMFS, > + RTEMS_FILESYSTEM_READ_ONLY, > + NULL > + ); > + rtems_test_assert(rv == 0); > + > + errno = 0; > + rv = unmount(mnt); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + rv = symlink(mnt, link); > + rtems_test_assert(rv == 0); > + > + errno = 0; > + rv = readlink(link, &buf[0], sizeof(buf)); > + rtems_test_assert(rv == -1); > + rtems_test_assert(errno == ENOTSUP); > + > + TEST_END(); > + rtems_test_exit(0); > +} > + > +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER > +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER > + > +#define CONFIGURE_FILESYSTEM_IMFS > + > +#define CONFIGURE_IMFS_DISABLE_READLINK > +#define CONFIGURE_IMFS_DISABLE_UNMOUNT > + > +#define CONFIGURE_MAXIMUM_TASKS 1 > + > +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > + > +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE > + > +#define CONFIGURE_INIT > + > +#include <rtems/confdefs.h> > diff --git a/testsuites/fstests/fsimfsgeneric01/init.c > b/testsuites/fstests/fsimfsgeneric01/init.c > index 44d75c5..6cc6c15 100644 > --- a/testsuites/fstests/fsimfsgeneric01/init.c > +++ b/testsuites/fstests/fsimfsgeneric01/init.c > @@ -396,6 +396,13 @@ static const IMFS_node_control > node_initialization_error_control = { > .node_destroy = node_destroy_inhibited > }; > > +static const rtems_filesystem_operations_table *imfs_ops; > + > +static int other_clone(rtems_filesystem_location_info_t *loc) > +{ > + return (*imfs_ops->clonenod_h)(loc); > +} > + > static void test_imfs_make_generic_node_errors(void) > { > int rv = 0; > @@ -403,7 +410,7 @@ static void test_imfs_make_generic_node_errors(void) > rtems_chain_control *chain = &rtems_filesystem_mount_table; > rtems_filesystem_mount_table_entry_t *mt_entry = > (rtems_filesystem_mount_table_entry_t *) rtems_chain_first(chain); > - const char *type = mt_entry->type; > + rtems_filesystem_operations_table other_ops; > void *opaque = NULL; > rtems_resource_snapshot before; > > @@ -421,14 +428,17 @@ static void test_imfs_make_generic_node_errors(void) > rtems_test_assert(rtems_resource_snapshot_check(&before)); > > errno = 0; > - mt_entry->type = "XXX"; > + imfs_ops = mt_entry->ops; > + other_ops = *imfs_ops; > + other_ops.clonenod_h = other_clone; > + mt_entry->ops = &other_ops; > rv = IMFS_make_generic_node( > path, > S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO, > &node_control, > NULL > ); > - mt_entry->type = type; > + mt_entry->ops = imfs_ops; > rtems_test_assert(rv == -1); > rtems_test_assert(errno == ENOTSUP); > rtems_test_assert(rtems_resource_snapshot_check(&before)); > diff --git a/testsuites/fstests/mimfs_support/fs_support.c > b/testsuites/fstests/mimfs_support/fs_support.c > index 849d856..29ccfd3 100644 > --- a/testsuites/fstests/mimfs_support/fs_support.c > +++ b/testsuites/fstests/mimfs_support/fs_support.c > @@ -64,5 +64,7 @@ test_shutdown_filesystem (void) > #define CONFIGURE_INIT_TASK_STACK_SIZE (16 * 1024) > #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 1 > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_INIT > #include <rtems/confdefs.h> > diff --git a/testsuites/libtests/tar03/init.c > b/testsuites/libtests/tar03/init.c > index 3e2b5d3..72e95ec 100644 > --- a/testsuites/libtests/tar03/init.c > +++ b/testsuites/libtests/tar03/init.c > @@ -34,13 +34,6 @@ void test_tarfs_error(void) > printf ("error: untar failed returned %d\n", sc); > rtems_test_exit(1); > } > - > - puts("Loading tarfs image with miniIMFS as root filesystem - ERROR"); > - sc = rtems_tarfs_load("/",(void *)rtems_task_create, 72); > - if (sc != -1) { > - printf ("error: untar failed returned %d\n", sc); > - rtems_test_exit(1); > - } > } > > rtems_task Init( > @@ -65,8 +58,6 @@ rtems_task Init( > > #define CONFIGURE_RTEMS_INIT_TASKS_TABLE > > -#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > - > #define CONFIGURE_INIT > #include <rtems/confdefs.h> > /* end of file */ > diff --git a/testsuites/psxtests/psxfile01/main.c > b/testsuites/psxtests/psxfile01/main.c > index a6ad029..554f8e9 100644 > --- a/testsuites/psxtests/psxfile01/main.c > +++ b/testsuites/psxtests/psxfile01/main.c > @@ -35,6 +35,8 @@ rtems_task Init( > > #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6 > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_MAXIMUM_TASKS 1 > #define CONFIGURE_INIT_TASK_STACK_SIZE (2 * RTEMS_MINIMUM_STACK_SIZE) > > diff --git a/testsuites/psxtests/psximfs02/init.c > b/testsuites/psxtests/psximfs02/init.c > index 00a171f..d372a6f 100644 > --- a/testsuites/psxtests/psximfs02/init.c > +++ b/testsuites/psxtests/psximfs02/init.c > @@ -208,6 +208,8 @@ rtems_task Init( > #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER > #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_MAXIMUM_TASKS 1 > #define CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK 15 > #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4 > diff --git a/testsuites/psxtests/psxmount/main.c > b/testsuites/psxtests/psxmount/main.c > index 2e32a29..a723b87 100644 > --- a/testsuites/psxtests/psxmount/main.c > +++ b/testsuites/psxtests/psxmount/main.c > @@ -33,6 +33,8 @@ rtems_task Init( > > #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10 > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_MAXIMUM_TASKS 1 > > #define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 1 > diff --git a/testsuites/psxtests/psxreaddir/main.c > b/testsuites/psxtests/psxreaddir/main.c > index 90880b0..176d264 100644 > --- a/testsuites/psxtests/psxreaddir/main.c > +++ b/testsuites/psxtests/psxreaddir/main.c > @@ -31,6 +31,8 @@ rtems_task Init( > > #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10 > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_MAXIMUM_TASKS 1 > > #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > diff --git a/testsuites/psxtests/psxstat/main.c > b/testsuites/psxtests/psxstat/main.c > index 19ed8d4..07fde7f 100644 > --- a/testsuites/psxtests/psxstat/main.c > +++ b/testsuites/psxtests/psxstat/main.c > @@ -35,6 +35,8 @@ rtems_task Init( > > #define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 10 > > +#define CONFIGURE_FILESYSTEM_IMFS > + > #define CONFIGURE_MAXIMUM_TASKS 1 > > #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > diff --git a/testsuites/samples/iostream/system.h > b/testsuites/samples/iostream/system.h > index 7256f8f..62f7d53 100644 > --- a/testsuites/samples/iostream/system.h > +++ b/testsuites/samples/iostream/system.h > @@ -31,9 +31,6 @@ > #define CONFIGURE_INIT_TASK_STACK_SIZE (RTEMS_MINIMUM_STACK_SIZE * 2) > #define CONFIGURE_EXTRA_TASK_STACKS RTEMS_MINIMUM_STACK_SIZE > > -/* Only remove when this macro is removed from confdefs.h. It tests it. */ > -#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > - > #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION > > #include <rtems/confdefs.h> > diff --git a/testsuites/sptests/sp47/init.c b/testsuites/sptests/sp47/init.c > index 1a0d569..5d28303 100644 > --- a/testsuites/sptests/sp47/init.c > +++ b/testsuites/sptests/sp47/init.c > @@ -74,7 +74,5 @@ rtems_task Init(rtems_task_argument ignored) > > #define CONFIGURE_RTEMS_INIT_TASKS_TABLE > > -#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > - > #define CONFIGURE_INIT > #include <rtems/confdefs.h> > diff --git a/testsuites/sptests/sp48/init.c b/testsuites/sptests/sp48/init.c > index 701aa17..53d8245 100644 > --- a/testsuites/sptests/sp48/init.c > +++ b/testsuites/sptests/sp48/init.c > @@ -102,7 +102,5 @@ rtems_task Init(rtems_task_argument ignored) > > #define CONFIGURE_RTEMS_INIT_TASKS_TABLE > > -#define CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM > - > #define CONFIGURE_INIT > #include <rtems/confdefs.h> > > _______________________________________________ > vc mailing list > v...@rtems.org > http://lists.rtems.org/mailman/listinfo/vc -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel