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. --- 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 ------------------------ 6 files changed, 7 insertions(+), 183 deletions(-) delete mode 100644 cpukit/libfs/src/imfs/fifoimfs_init.c delete mode 100644 cpukit/libfs/src/imfs/miniimfs_init.c (limited to 'cpukit/libfs/src/imfs') 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 ); -} -- cgit v1.2.3