From a9df9169882c564af6714bbf121c278092d3c51c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Sun, 8 Feb 2015 19:43:09 +0100 Subject: 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(-) delete mode 100644 cpukit/libfs/src/imfs/fifoimfs_init.c delete mode 100644 cpukit/libfs/src/imfs/miniimfs_init.c create mode 100644 testsuites/fstests/fsimfsconfig01/Makefile.am create mode 100644 testsuites/fstests/fsimfsconfig01/fsimfsconfig01.doc create mode 100644 testsuites/fstests/fsimfsconfig01/fsimfsconfig01.scn create mode 100644 testsuites/fstests/fsimfsconfig01/init.c create mode 100644 testsuites/fstests/fsimfsconfig02/Makefile.am create mode 100644 testsuites/fstests/fsimfsconfig02/fsimfsconfig02.doc create mode 100644 testsuites/fstests/fsimfsconfig02/fsimfsconfig02.scn create mode 100644 testsuites/fstests/fsimfsconfig02/init.c 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 72a43fa091..cb9ff146ad 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 #include diff --git a/cpukit/libfs/Makefile.am b/cpukit/libfs/Makefile.am index 3c454e7154..802dfdb141 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 4063557739..0000000000 --- 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 - * - * - * 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 - -#include - -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 00fc1795a6..c03257a0fa 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 e82490fac9..bbab2cb3e1 100644 --- a/cpukit/libfs/src/imfs/imfs_init.c +++ b/cpukit/libfs/src/imfs/imfs_init.c @@ -25,7 +25,7 @@ #include -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 d303cd29eb..7228978094 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 f302dda93f..aef21c9493 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 7451c5eb0d..0000000000 --- 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 - -#include - -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 211c6bc77f..6fb09512f6 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 @@ -354,29 +336,13 @@ const rtems_libio_helper rtems_fs_init_helper = IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK #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 #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 7afe09cd26..fd986e2362 100644 --- a/doc/user/conf.t +++ b/doc/user/conf.t @@ -2576,40 +2576,6 @@ The number of entries in this table is in an integer variable named 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 @@ -2710,6 +2676,292 @@ infrastructure necessary to support @code{printf()}. @subheading NOTES: 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 diff --git a/testsuites/fstests/Makefile.am b/testsuites/fstests/Makefile.am index 404966cb24..6b01b20184 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 fca2fdfa84..87b8961746 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 0000000000..0787dbe8d8 --- /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 0000000000..d243512e12 --- /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 0000000000..145048bf40 --- /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 0000000000..3f842c0451 --- /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 + * + * + * 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 +#include +#include +#include +#include + +#include +#include + +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 diff --git a/testsuites/fstests/fsimfsconfig02/Makefile.am b/testsuites/fstests/fsimfsconfig02/Makefile.am new file mode 100644 index 0000000000..9567eea8ec --- /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 0000000000..3693513eea --- /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 0000000000..c89a4a219a --- /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 0000000000..35f9c83b58 --- /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 + * + * + * 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 +#include +#include + +#include +#include + +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 diff --git a/testsuites/fstests/fsimfsgeneric01/init.c b/testsuites/fstests/fsimfsgeneric01/init.c index 44d75c5fad..6cc6c15436 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 849d856bea..29ccfd371c 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 diff --git a/testsuites/libtests/tar03/init.c b/testsuites/libtests/tar03/init.c index 3e2b5d3e68..72e95ecd2f 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 /* end of file */ diff --git a/testsuites/psxtests/psxfile01/main.c b/testsuites/psxtests/psxfile01/main.c index a6ad029e05..554f8e96f8 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 00a171fd99..d372a6f11b 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 2e32a291ff..a723b87d4a 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 90880b0b6b..176d264978 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 19ed8d47c8..07fde7f9b5 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 7256f8fce7..62f7d535ec 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 diff --git a/testsuites/sptests/sp47/init.c b/testsuites/sptests/sp47/init.c index 1a0d569e0b..5d28303f19 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 diff --git a/testsuites/sptests/sp48/init.c b/testsuites/sptests/sp48/init.c index 701aa17035..53d8245c23 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 -- cgit v1.2.3