* libcsupport/src/unmount.c: Removed obsolete declarations.  Fixed
	invalid memory free.

2010-06-10	Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libnetworking/rtems/ftpfs.h, libnetworking/lib/ftpfs.c:  Removed
	rtems_ftpfs_mount().

2010-06-10	Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libcsupport/src/mount-mktgt.c: New file.
	* libcsupport/Makefile.am: Reflect change above.
	* libcsupport/include/rtems/libio.h: Declare
	mount_and_make_target_path().

2010-06-09	Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libnetworking/rtems/ftpfs.h, libnetworking/lib/ftpfs.c:  Added
	rtems_ftpfs_mount() again.  Documentation.

2010-06-09	Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libcsupport/include/rtems/libio.h, sapi/include/confdefs.h: Added
	and use defines for file system types.

2010-06-09	Sebastian Huber <sebastian.huber@embedded-brains.de>

	* libcsupport/src/mount.c: Fixed NULL pointer access.
This commit is contained in:
Sebastian Huber
2010-07-01 14:39:39 +00:00
parent 615d8ccf76
commit 3d3a18e619
9 changed files with 179 additions and 89 deletions

View File

@@ -197,6 +197,37 @@
libfs/src/rfs/rtems-rfs-group.h, libfs/src/rfs/rtems-rfs-inode.h: libfs/src/rfs/rtems-rfs-group.h, libfs/src/rfs/rtems-rfs-inode.h:
Fix broken doxygen commands. Fix broken doxygen commands.
2010-06-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/src/unmount.c: Removed obsolete declarations. Fixed
invalid memory free.
2010-06-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libnetworking/rtems/ftpfs.h, libnetworking/lib/ftpfs.c: Removed
rtems_ftpfs_mount().
2010-06-10 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/src/mount-mktgt.c: New file.
* libcsupport/Makefile.am: Reflect change above.
* libcsupport/include/rtems/libio.h: Declare
mount_and_make_target_path().
2010-06-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libnetworking/rtems/ftpfs.h, libnetworking/lib/ftpfs.c: Added
rtems_ftpfs_mount() again. Documentation.
2010-06-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/libio.h, sapi/include/confdefs.h: Added
and use defines for file system types.
2010-06-09 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/src/mount.c: Fixed NULL pointer access.
2010-06-09 Ralf Corsépius <ralf.corsepius@rtems.org> 2010-06-09 Ralf Corsépius <ralf.corsepius@rtems.org>
* configure.ac: Remove nios2 (unsupported, no toolchain). * configure.ac: Remove nios2 (unsupported, no toolchain).

View File

@@ -44,7 +44,7 @@ ASSOCIATION_C_FILES = src/assoclocalbyname.c \
src/assocremotebylocal.c src/assocremotebyname.c src/assocremotebylocal.c src/assocremotebyname.c
BASE_FS_C_FILES = src/base_fs.c src/mount.c src/unmount.c src/libio.c \ BASE_FS_C_FILES = src/base_fs.c src/mount.c src/unmount.c src/libio.c \
src/mount-mgr.c src/libio_init.c \ src/mount-mgr.c src/mount-mktgt.c src/libio_init.c \
src/libio_sockets.c src/eval.c src/fs_null_handlers.c src/privateenv.c \ src/libio_sockets.c src/eval.c src/fs_null_handlers.c src/privateenv.c \
src/open_dev_console.c src/__usrenv.c src/rtems_mkdir.c src/open_dev_console.c src/__usrenv.c src/rtems_mkdir.c

View File

@@ -56,7 +56,7 @@ extern "C" {
typedef _off64_t rtems_off64_t; typedef _off64_t rtems_off64_t;
/** /**
* @name File system node types. * @name File System Node Types
* *
* @{ * @{
*/ */
@@ -669,6 +669,23 @@ static inline rtems_device_minor_number rtems_filesystem_dev_minor_t(
#define rtems_libio_is_valid_perms( _perm ) \ #define rtems_libio_is_valid_perms( _perm ) \
(~ ((~RTEMS_LIBIO_PERMS_RWX) & _perm )) (~ ((~RTEMS_LIBIO_PERMS_RWX) & _perm ))
/**
* @name File System Types
*
* @{
*/
#define RTEMS_FILESYSTEM_TYPE_IMFS "imfs"
#define RTEMS_FILESYSTEM_TYPE_MINIIMFS "mimfs"
#define RTEMS_FILESYSTEM_TYPE_DEVFS "devfs"
#define RTEMS_FILESYSTEM_TYPE_FTPFS "ftpfs"
#define RTEMS_FILESYSTEM_TYPE_TFTPFS "tftpfs"
#define RTEMS_FILESYSTEM_TYPE_NFS "nfs"
#define RTEMS_FILESYSTEM_TYPE_DOSFS "dosfs"
#define RTEMS_FILESYSTEM_TYPE_RFS "rfs"
/** @} */
/* /*
* Prototypes for filesystem * Prototypes for filesystem
*/ */
@@ -687,6 +704,25 @@ int mount(
const void *data const void *data
); );
/**
* @brief Mounts a file system and makes the @a target path.
*
* The @a target path will be created with rtems_mkdir() and must not be
* @c NULL.
*
* @see mount().
*
* @retval 0 Successful operation.
* @retval -1 An error occured. The @c errno indicates the error.
*/
int mount_and_make_target_path(
const char *source,
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
);
/* /*
* Boot Time Mount Table Structure * Boot Time Mount Table Structure
*/ */
@@ -719,7 +755,7 @@ extern rtems_fs_init_functions_t rtems_fs_init_helper;
* The @a mode value selects the access permissions of the directory. * The @a mode value selects the access permissions of the directory.
* *
* @retval 0 Successful operation. * @retval 0 Successful operation.
* @retval -1 An error occured. @c errno indicates the error. * @retval -1 An error occured. The @c errno indicates the error.
*/ */
extern int rtems_mkdir(const char *path, mode_t mode); extern int rtems_mkdir(const char *path, mode_t mode);

View File

@@ -0,0 +1,56 @@
/**
* @file
*
* @ingroup LibIO
*
* @brief mount_and_make_target_path() implementation.
*/
/*
* Copyright (c) 2010
* embedded brains GmbH
* Obere Lagerstr. 30
* D-82178 Puchheim
* Germany
* <rtems@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.com/license/LICENSE.
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <errno.h>
#include <rtems/libio.h>
int mount_and_make_target_path(
const char *source,
const char *target,
const char *filesystemtype,
rtems_filesystem_options_t options,
const void *data
)
{
int rv = -1;
if (target != NULL) {
rv = rtems_mkdir(target, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv == 0) {
rv = mount(
source,
target,
filesystemtype,
options,
data
);
}
} else {
errno = EINVAL;
}
return rv;
}

View File

@@ -93,30 +93,31 @@ static bool Is_node_fs_root(
} }
static rtems_filesystem_mount_table_entry_t *alloc_mount_table_entry( static rtems_filesystem_mount_table_entry_t *alloc_mount_table_entry(
const char *source, const char *source_or_null,
const char *target, const char *target_or_null,
const char *filesystemtype, const char *filesystemtype,
size_t *target_length_ptr size_t *target_length_ptr
) )
{ {
const char *target_str = target ? target : "/"; const char *target = target_or_null != NULL ? target_or_null : "/";
size_t filesystemtype_size = strlen( filesystemtype ) + 1; size_t filesystemtype_size = strlen( filesystemtype ) + 1;
size_t source_size = source ? strlen( source ) + 1 : 0; size_t source_size = source_or_null != NULL ?
size_t target_length = strlen( target_str ); strlen( source_or_null ) + 1 : 0;
size_t target_length = strlen( target );
size_t size = sizeof( rtems_filesystem_mount_table_entry_t ) size_t size = sizeof( rtems_filesystem_mount_table_entry_t )
+ filesystemtype_size + source_size + target_length + 1; + filesystemtype_size + source_size + target_length + 1;
rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size );
if ( mt_entry ) { if ( mt_entry != NULL ) {
char *str = (char *) mt_entry + sizeof( *mt_entry ); char *str = (char *) mt_entry + sizeof( *mt_entry );
mt_entry->type = str; mt_entry->type = str;
strcpy( str, filesystemtype ); strcpy( str, filesystemtype );
if ( source ) { if ( source_or_null != NULL ) {
str += filesystemtype_size; str += filesystemtype_size;
mt_entry->dev = str; mt_entry->dev = str;
strcpy( str, source ); strcpy( str, source_or_null );
} }
str += source_size; str += source_size;

View File

@@ -33,16 +33,6 @@
#include <rtems/libio_.h> #include <rtems/libio_.h>
#include <rtems/seterr.h> #include <rtems/seterr.h>
/*
* Data structures and routines private to mount/unmount pair.
*/
extern rtems_chain_control rtems_filesystem_mount_table_control;
int search_mt_for_mount_point(
rtems_filesystem_location_info_t *location_of_mount_point
);
bool rtems_filesystem_nodes_equal( bool rtems_filesystem_nodes_equal(
const rtems_filesystem_location_info_t *loc1, const rtems_filesystem_location_info_t *loc1,
const rtems_filesystem_location_info_t *loc2 const rtems_filesystem_location_info_t *loc2
@@ -213,7 +203,6 @@ int unmount(
*/ */
rtems_filesystem_freenode( fs_mount_loc ); rtems_filesystem_freenode( fs_mount_loc );
free( (void*) mt_entry->target );
free( mt_entry ); free( mt_entry );
return 0; return 0;

View File

@@ -99,6 +99,8 @@ typedef struct {
struct timeval timeout; struct timeval timeout;
} rtems_ftpfs_mount_entry; } rtems_ftpfs_mount_entry;
static const rtems_filesystem_operations_table rtems_ftpfs_ops;
static const rtems_filesystem_file_handlers_r rtems_ftpfs_handlers; static const rtems_filesystem_file_handlers_r rtems_ftpfs_handlers;
static const rtems_filesystem_file_handlers_r rtems_ftpfs_root_handlers; static const rtems_filesystem_file_handlers_r rtems_ftpfs_root_handlers;
@@ -130,36 +132,6 @@ static int rtems_ftpfs_set_connection_timeout(
return 0; return 0;
} }
#if 0
CCJ_REMOVE_MOUNT
rtems_status_code rtems_ftpfs_mount(const char *mount_point)
{
int rv = 0;
if (mount_point == NULL) {
mount_point = RTEMS_FTPFS_MOUNT_POINT_DEFAULT;
}
rv = mkdir(mount_point, S_IRWXU | S_IRWXG | S_IRWXO);
if (rv != 0) {
return RTEMS_IO_ERROR;
}
rv = mount(
NULL,
&rtems_ftpfs_ops,
RTEMS_FILESYSTEM_READ_WRITE,
NULL,
mount_point
);
if (rv != 0) {
return RTEMS_IO_ERROR;
}
return RTEMS_SUCCESSFUL;
}
#endif
static rtems_status_code rtems_ftpfs_do_ioctl( static rtems_status_code rtems_ftpfs_do_ioctl(
const char *mount_point, const char *mount_point,
ioctl_command_t req, ioctl_command_t req,
@@ -1318,7 +1290,7 @@ static int rtems_ftpfs_fstat(
return 0; return 0;
} }
const rtems_filesystem_operations_table rtems_ftpfs_ops = { static const rtems_filesystem_operations_table rtems_ftpfs_ops = {
.evalpath_h = rtems_ftpfs_eval_path, .evalpath_h = rtems_ftpfs_eval_path,
.evalformake_h = NULL, .evalformake_h = NULL,
.link_h = NULL, .link_h = NULL,

View File

@@ -1,7 +1,7 @@
/** /**
* @file * @file
* *
* File Transfer Protocol file system (FTP client). * @brief File Transfer Protocol file system (FTP client).
*/ */
/* /*
@@ -46,12 +46,15 @@ extern "C" {
/** /**
* @defgroup rtems_ftpfs File Transfer Protocol File System * @defgroup rtems_ftpfs File Transfer Protocol File System
* *
* The FTP file system (FTP client) can be used to transfer files from or to * @brief The FTP file system (FTP client) can be used to transfer files from
* remote hosts. * or to remote hosts.
* *
* You can mount the FTP file system with a call to rtems_ftpfs_mount(). * You can mount the FTP file system with a call to mount() or
* Alternatively you can use mount() with the @ref rtems_ftpfs_ops operations * mount_and_make_target_path() with the @ref RTEMS_FILESYSTEM_TYPE_FTPFS file
* table. * system type.
*
* You have to add @ref CONFIGURE_FILESYSTEM_FTPFS to your application
* configuration.
* *
* You can open files either read-only or write-only. A seek is not allowed. * You can open files either read-only or write-only. A seek is not allowed.
* A close terminates the control and data connections. * A close terminates the control and data connections.
@@ -74,17 +77,17 @@ extern "C" {
*/ */
/** /**
* Well-known port number for FTP control connection. * @brief Well-known port number for FTP control connection.
*/ */
#define RTEMS_FTPFS_CTRL_PORT 21 #define RTEMS_FTPFS_CTRL_PORT 21
/** /**
* Default mount point for FTP file system. * @brief Default mount point for FTP file system.
*/ */
#define RTEMS_FTPFS_MOUNT_POINT_DEFAULT "/FTP" #define RTEMS_FTPFS_MOUNT_POINT_DEFAULT "/FTP"
/** /**
* FTP file system IO control requests. * @brief FTP file system IO control requests.
*/ */
typedef enum { typedef enum {
RTEMS_FTPFS_IOCTL_GET_VERBOSE = _IOR( 'd', 1, bool *), RTEMS_FTPFS_IOCTL_GET_VERBOSE = _IOR( 'd', 1, bool *),
@@ -94,13 +97,8 @@ typedef enum {
} rtems_ftpfs_ioctl_numbers; } rtems_ftpfs_ioctl_numbers;
/** /**
* FTP file system operations table. * @brief Returns in @a verbose if the verbose mode is enabled or disabled for
*/ * the file system at @a mount_point.
extern const rtems_filesystem_operations_table rtems_ftpfs_ops;
/**
* Returns in @a verbose if the verbose mode is enabled or disabled for the
* file system at @a mount_point.
* *
* If @a mount_point is @c NULL the default mount point * If @a mount_point is @c NULL the default mount point
* @ref RTEMS_FTPFS_MOUNT_POINT_DEFAULT will be used. * @ref RTEMS_FTPFS_MOUNT_POINT_DEFAULT will be used.
@@ -108,7 +106,7 @@ extern const rtems_filesystem_operations_table rtems_ftpfs_ops;
rtems_status_code rtems_ftpfs_get_verbose( const char *mount_point, bool *verbose); rtems_status_code rtems_ftpfs_get_verbose( const char *mount_point, bool *verbose);
/** /**
* Enables or disables the verbose mode if @a verbose is @c true or * @brief Enables or disables the verbose mode if @a verbose is @c true or
* @c false respectively for the file system at @a mount_point. * @c false respectively for the file system at @a mount_point.
* *
* In the enabled verbose mode the commands and replies of the FTP control * In the enabled verbose mode the commands and replies of the FTP control
@@ -120,8 +118,8 @@ rtems_status_code rtems_ftpfs_get_verbose( const char *mount_point, bool *verbos
rtems_status_code rtems_ftpfs_set_verbose( const char *mount_point, bool verbose); rtems_status_code rtems_ftpfs_set_verbose( const char *mount_point, bool verbose);
/** /**
* Returns the current timeout value in @a timeout for the file system at * @brief Returns the current timeout value in @a timeout for the file system
* @a mount_point. * at @a mount_point.
* *
* If @a mount_point is @c NULL the default mount point * If @a mount_point is @c NULL the default mount point
* @ref RTEMS_FTPFS_MOUNT_POINT_DEFAULT will be used. * @ref RTEMS_FTPFS_MOUNT_POINT_DEFAULT will be used.
@@ -132,7 +130,8 @@ rtems_status_code rtems_ftpfs_get_timeout(
); );
/** /**
* Sets the timeout value to @a timeout for the file system at @a mount_point. * @brief Sets the timeout value to @a timeout for the file system at
* @a mount_point.
* *
* The timeout value will be used during connection establishment of active * The timeout value will be used during connection establishment of active
* data connections. It will be also used for send and receive operations on * data connections. It will be also used for send and receive operations on
@@ -149,13 +148,12 @@ rtems_status_code rtems_ftpfs_set_timeout(
/** @} */ /** @} */
/** /**
* Creates the default mount point @ref RTEMS_FTPFS_MOUNT_POINT_DEFAULT and * @brief Do not call directly, use mount().
* mounts the FTP file system. Do not call directly, use mount.xs
*
* It is mounted with read and write access.
*/ */
int rtems_ftpfs_initialize(rtems_filesystem_mount_table_entry_t *e, int rtems_ftpfs_initialize(
const void *d); rtems_filesystem_mount_table_entry_t *mt_entry,
const void *data
);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -284,7 +284,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
*/ */
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS) && \
defined(CONFIGURE_FILESYSTEM_miniIMFS) defined(CONFIGURE_FILESYSTEM_miniIMFS)
#define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS { "mimfs", miniIMFS_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS \
{ RTEMS_FILESYSTEM_TYPE_MINIIMFS, miniIMFS_initialize }
#endif #endif
/** /**
@@ -301,7 +302,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DEVFS) && \
defined(CONFIGURE_FILESYSTEM_DEVFS) defined(CONFIGURE_FILESYSTEM_DEVFS)
#include <rtems/devfs.h> #include <rtems/devfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_DEVFS { "devfs", devFS_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_DEVFS \
{ RTEMS_FILESYSTEM_TYPE_DEVFS, devFS_initialize }
#endif #endif
#ifdef RTEMS_NETWORKING #ifdef RTEMS_NETWORKING
@@ -311,7 +313,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS) && \
defined(CONFIGURE_FILESYSTEM_FTPFS) defined(CONFIGURE_FILESYSTEM_FTPFS)
#include <rtems/ftpfs.h> #include <rtems/ftpfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_FTPFS { "ftpfs", rtems_ftpfs_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_FTPFS \
{ RTEMS_FILESYSTEM_TYPE_FTPFS, rtems_ftpfs_initialize }
#endif #endif
/** /**
@@ -320,7 +323,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_TFTPFS) && \
defined(CONFIGURE_FILESYSTEM_TFTPFS) defined(CONFIGURE_FILESYSTEM_TFTPFS)
#include <rtems/tftp.h> #include <rtems/tftp.h>
#define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS { "tftpfs", rtems_tftpfs_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_TFTPFS \
{ RTEMS_FILESYSTEM_TYPE_TFTPFS, rtems_tftpfs_initialize }
#endif #endif
/** /**
@@ -329,7 +333,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS) && \
defined(CONFIGURE_FILESYSTEM_NFSFS) defined(CONFIGURE_FILESYSTEM_NFSFS)
#include <librtemsNfs.h> #include <librtemsNfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_NFSFS { "nfs", rtems_nfsfs_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_NFSFS \
{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfsfs_initialize }
#endif #endif
#endif #endif
@@ -339,7 +344,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS) && \
defined(CONFIGURE_FILESYSTEM_DOSFS) defined(CONFIGURE_FILESYSTEM_DOSFS)
#include <rtems/dosfs.h> #include <rtems/dosfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_DOSFS { "dosfs", rtems_dosfs_initialize } #define CONFIGURE_FILESYSTEM_ENTRY_DOSFS \
{ RTEMS_FILESYSTEM_TYPE_DOSFS, rtems_dosfs_initialize }
#endif #endif
/** /**
@@ -348,7 +354,8 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \ #if !defined(CONFIGURE_FILESYSTEM_ENTRY_RFS) && \
defined(CONFIGURE_FILESYSTEM_RFS) defined(CONFIGURE_FILESYSTEM_RFS)
#include <rtems/rtems-rfs.h> #include <rtems/rtems-rfs.h>
#define CONFIGURE_FILESYSTEM_ENTRY_RFS { "rfs", rtems_rfs_rtems_initialise } #define CONFIGURE_FILESYSTEM_ENTRY_RFS \
{ RTEMS_FILESYSTEM_TYPE_RFS, rtems_rfs_rtems_initialise }
#endif #endif
#ifdef CONFIGURE_INIT #ifdef CONFIGURE_INIT
@@ -440,11 +447,11 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
#ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE #ifndef CONFIGURE_HAS_OWN_MOUNT_TABLE
const rtems_filesystem_mount_table_t configuration_mount_table = { const rtems_filesystem_mount_table_t configuration_mount_table = {
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM) #if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
"devfs", RTEMS_FILESYSTEM_TYPE_DEVFS,
#elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM) #elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM)
"mimfs", RTEMS_FILESYSTEM_TYPE_MINIIMFS,
#else /* using IMFS as base filesystem */ #else /* using IMFS as base filesystem */
"imfs", RTEMS_FILESYSTEM_TYPE_IMFS,
#endif #endif
RTEMS_FILESYSTEM_READ_WRITE, RTEMS_FILESYSTEM_READ_WRITE,
NULL, NULL,