forked from Imagelibrary/rtems
2010-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libcsupport/include/rtems/libio_.h: Removed rtems_filesystem_mount_table_control. * libcsupport/include/rtems/libio.h, libcsupport/src/mount-mgr.c, libcsupport/src/mount.c libcsupport/src/statvfs.c, libcsupport/src/unmount.c, libmisc/shell/main_mount.c: Documentation. Removed rtems_filesystem_mounts_first() and rtems_filesystem_mounts_next(). Added rtems_filesystem_mount_iterate(). Changed return type of rtems_filesystem_iterate(). Removed rtems_filesystem_nodes_equal(). 2010-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de> * libfs/src/nfsclient/src/nfs.c, libfs/src/nfsclient/src/nfs.c, libfs/src/nfsclient/src/librtemsNfs.h: Renamed rtems_nfsfs_initialize() in rtems_nfs_initialize(). * sapi/include/confdefs.h: Reflect changes above. Renamed *_miniIMFS in *_MINIIMFS. Renamed *_NFSFS in *_NFS.
This commit is contained in:
@@ -1,3 +1,23 @@
|
|||||||
|
2010-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* libcsupport/include/rtems/libio_.h: Removed
|
||||||
|
rtems_filesystem_mount_table_control.
|
||||||
|
* libcsupport/include/rtems/libio.h, libcsupport/src/mount-mgr.c,
|
||||||
|
libcsupport/src/mount.c libcsupport/src/statvfs.c,
|
||||||
|
libcsupport/src/unmount.c, libmisc/shell/main_mount.c: Documentation.
|
||||||
|
Removed rtems_filesystem_mounts_first() and
|
||||||
|
rtems_filesystem_mounts_next(). Added
|
||||||
|
rtems_filesystem_mount_iterate(). Changed return type of
|
||||||
|
rtems_filesystem_iterate(). Removed rtems_filesystem_nodes_equal().
|
||||||
|
|
||||||
|
2010-07-01 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* libfs/src/nfsclient/src/nfs.c, libfs/src/nfsclient/src/nfs.c,
|
||||||
|
libfs/src/nfsclient/src/librtemsNfs.h: Renamed
|
||||||
|
rtems_nfsfs_initialize() in rtems_nfs_initialize().
|
||||||
|
* sapi/include/confdefs.h: Reflect changes above. Renamed
|
||||||
|
*_miniIMFS in *_MINIIMFS. Renamed *_NFSFS in *_NFS.
|
||||||
|
|
||||||
2010-06-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2010-06-29 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* libnetworking/lib/tftpDriver.c: rtems_tftp_ops and
|
* libnetworking/lib/tftpDriver.c: rtems_tftp_ops and
|
||||||
|
|||||||
@@ -313,46 +313,6 @@ struct _rtems_filesystem_operations_table {
|
|||||||
rtems_filesystem_statvfs_t statvfs_h;
|
rtems_filesystem_statvfs_t statvfs_h;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief File system table entry.
|
|
||||||
*/
|
|
||||||
typedef struct rtems_filesystem_table_t {
|
|
||||||
const char *type;
|
|
||||||
rtems_filesystem_fsmount_me_t mount_h;
|
|
||||||
} rtems_filesystem_table_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Static table of file systems.
|
|
||||||
*
|
|
||||||
* Externally defined by confdefs.h or the user.
|
|
||||||
*/
|
|
||||||
extern const rtems_filesystem_table_t rtems_filesystem_table [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Per file system table entry routine type.
|
|
||||||
*
|
|
||||||
* @see rtems_filesystem_iterate().
|
|
||||||
*
|
|
||||||
* @retval true Continue the iteration.
|
|
||||||
* @retval false Stop the iteration.
|
|
||||||
*/
|
|
||||||
typedef bool (*rtems_per_filesystem_routine)(
|
|
||||||
const rtems_filesystem_table_t *entry,
|
|
||||||
void *arg
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Iterates over the file system table.
|
|
||||||
*
|
|
||||||
* For each file system table entry the @a routine will be called with the
|
|
||||||
* table entry and the @a routine_arg parameter.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
rtems_filesystem_iterate(
|
|
||||||
rtems_per_filesystem_routine routine,
|
|
||||||
void *routine_arg
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Gets the mount handler for the file system @a type.
|
* @brief Gets the mount handler for the file system @a type.
|
||||||
*
|
*
|
||||||
@@ -364,35 +324,6 @@ rtems_filesystem_get_mount_handler(
|
|||||||
const char *type
|
const char *type
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the first entry in the mount table.
|
|
||||||
*/
|
|
||||||
rtems_filesystem_mount_table_entry_t*
|
|
||||||
rtems_filesystem_mounts_first( void );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the next entry in the mount table.
|
|
||||||
*/
|
|
||||||
rtems_filesystem_mount_table_entry_t*
|
|
||||||
rtems_filesystem_mounts_next( rtems_filesystem_mount_table_entry_t *entry );
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Register a file system.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
rtems_filesystem_register(
|
|
||||||
const char *type,
|
|
||||||
rtems_filesystem_fsmount_me_t mount_h
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Unregister a file system.
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
rtems_filesystem_unregister(
|
|
||||||
const char *type
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Contain file system specific information which is required to support
|
* @brief Contain file system specific information which is required to support
|
||||||
* fpathconf().
|
* fpathconf().
|
||||||
@@ -419,67 +350,6 @@ typedef struct {
|
|||||||
*/
|
*/
|
||||||
extern const rtems_filesystem_limits_and_options_t rtems_filesystem_default_pathconf;
|
extern const rtems_filesystem_limits_and_options_t rtems_filesystem_default_pathconf;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Mount table entry.
|
|
||||||
*/
|
|
||||||
struct rtems_filesystem_mount_table_entry_tt {
|
|
||||||
rtems_chain_node Node;
|
|
||||||
rtems_filesystem_location_info_t mt_point_node;
|
|
||||||
rtems_filesystem_location_info_t mt_fs_root;
|
|
||||||
int options;
|
|
||||||
void *fs_info;
|
|
||||||
|
|
||||||
rtems_filesystem_limits_and_options_t pathconf_limits_and_options;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The target or mount point of the file system.
|
|
||||||
*/
|
|
||||||
const char *target;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The type of filesystem or the name of the filesystem.
|
|
||||||
*/
|
|
||||||
const char *type;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* When someone adds a mounted filesystem on a real device,
|
|
||||||
* this will need to be used.
|
|
||||||
*
|
|
||||||
* The lower layers can manage how this is managed. Leave as a
|
|
||||||
* string.
|
|
||||||
*/
|
|
||||||
char *dev;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The pathconf setting for a file system.
|
|
||||||
*/
|
|
||||||
#define rtems_filesystem_pathconf(_mte) ((_mte)->pathconf_limits_and_options)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The type of file system. Its name.
|
|
||||||
*/
|
|
||||||
#define rtems_filesystem_type(_mte) ((_mte)->type)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The mount point of a file system.
|
|
||||||
*/
|
|
||||||
#define rtems_filesystem_mount_point(_mte) ((_mte)->target)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The device entry of a file system.
|
|
||||||
*/
|
|
||||||
#define rtems_filesystem_mount_device(_mte) ((_mte)->dev)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief File systems options.
|
|
||||||
*/
|
|
||||||
typedef enum {
|
|
||||||
RTEMS_FILESYSTEM_READ_ONLY,
|
|
||||||
RTEMS_FILESYSTEM_READ_WRITE,
|
|
||||||
RTEMS_FILESYSTEM_BAD_OPTIONS
|
|
||||||
} rtems_filesystem_options_t;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief An open file data structure.
|
* @brief An open file data structure.
|
||||||
*
|
*
|
||||||
@@ -669,6 +539,46 @@ 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 ))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prototypes for filesystem
|
||||||
|
*/
|
||||||
|
|
||||||
|
void rtems_filesystem_initialize( void );
|
||||||
|
|
||||||
|
typedef void (*rtems_libio_init_functions_t)(void);
|
||||||
|
extern rtems_libio_init_functions_t rtems_libio_init_helper;
|
||||||
|
|
||||||
|
void open_dev_console(void);
|
||||||
|
|
||||||
|
typedef void (*rtems_libio_supp_functions_t)(void);
|
||||||
|
extern rtems_libio_supp_functions_t rtems_libio_supp_helper;
|
||||||
|
|
||||||
|
typedef void (*rtems_fs_init_functions_t)(void);
|
||||||
|
extern rtems_fs_init_functions_t rtems_fs_init_helper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Creates a directory and all its parent directories according to
|
||||||
|
* @a path.
|
||||||
|
*
|
||||||
|
* The @a mode value selects the access permissions of the directory.
|
||||||
|
*
|
||||||
|
* @retval 0 Successful operation.
|
||||||
|
* @retval -1 An error occured. The @c errno indicates the error.
|
||||||
|
*/
|
||||||
|
extern int rtems_mkdir(const char *path, mode_t mode);
|
||||||
|
|
||||||
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @defgroup FileSystemTypesAndMount File System Types and Mount
|
||||||
|
*
|
||||||
|
* @ingroup LibIO
|
||||||
|
*
|
||||||
|
* @brief File system types and mount.
|
||||||
|
*
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @name File System Types
|
* @name File System Types
|
||||||
*
|
*
|
||||||
@@ -686,16 +596,132 @@ static inline rtems_device_minor_number rtems_filesystem_dev_minor_t(
|
|||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Prototypes for filesystem
|
* @brief Mount table entry.
|
||||||
*/
|
*/
|
||||||
|
struct rtems_filesystem_mount_table_entry_tt {
|
||||||
|
rtems_chain_node Node;
|
||||||
|
rtems_filesystem_location_info_t mt_point_node;
|
||||||
|
rtems_filesystem_location_info_t mt_fs_root;
|
||||||
|
int options;
|
||||||
|
void *fs_info;
|
||||||
|
|
||||||
void rtems_filesystem_initialize( void );
|
rtems_filesystem_limits_and_options_t pathconf_limits_and_options;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The target or mount point of the file system.
|
||||||
|
*/
|
||||||
|
const char *target;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The type of filesystem or the name of the filesystem.
|
||||||
|
*/
|
||||||
|
const char *type;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When someone adds a mounted filesystem on a real device,
|
||||||
|
* this will need to be used.
|
||||||
|
*
|
||||||
|
* The lower layers can manage how this is managed. Leave as a
|
||||||
|
* string.
|
||||||
|
*/
|
||||||
|
char *dev;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief File system options.
|
||||||
|
*/
|
||||||
|
typedef enum {
|
||||||
|
RTEMS_FILESYSTEM_READ_ONLY,
|
||||||
|
RTEMS_FILESYSTEM_READ_WRITE,
|
||||||
|
RTEMS_FILESYSTEM_BAD_OPTIONS
|
||||||
|
} rtems_filesystem_options_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief File system table entry.
|
||||||
|
*/
|
||||||
|
typedef struct rtems_filesystem_table_t {
|
||||||
|
const char *type;
|
||||||
|
rtems_filesystem_fsmount_me_t mount_h;
|
||||||
|
} rtems_filesystem_table_t;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Static table of file systems.
|
||||||
|
*
|
||||||
|
* Externally defined by confdefs.h or the user.
|
||||||
|
*/
|
||||||
|
extern const rtems_filesystem_table_t rtems_filesystem_table [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Registers a file system @a type.
|
||||||
|
*
|
||||||
|
* The @a mount_h handler will be used to mount a file system of this @a type.
|
||||||
|
*
|
||||||
|
* @retval 0 Successful operation.
|
||||||
|
* @retval -1 An error occured. The @c errno indicates the error.
|
||||||
|
*/
|
||||||
|
int rtems_filesystem_register(
|
||||||
|
const char *type,
|
||||||
|
rtems_filesystem_fsmount_me_t mount_h
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Unregisters a file system @a type.
|
||||||
|
*
|
||||||
|
* @retval 0 Successful operation.
|
||||||
|
* @retval -1 An error occured. The @c errno indicates the error.
|
||||||
|
*/
|
||||||
|
int rtems_filesystem_unregister(
|
||||||
|
const char *type
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Unmounts the file system at @a mount_path.
|
||||||
|
*
|
||||||
|
* @todo Due to file system implementation shortcomings it is possible to
|
||||||
|
* unmount file systems in use. This likely leads to heap corruption. Unmount
|
||||||
|
* only file systems which are not in use by the application.
|
||||||
|
*
|
||||||
|
* @retval 0 Successful operation.
|
||||||
|
* @retval -1 An error occured. The @c errno indicates the error.
|
||||||
|
*/
|
||||||
int unmount(
|
int unmount(
|
||||||
const char *mount_path
|
const char *mount_path
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mounts a file system at @a target.
|
||||||
|
*
|
||||||
|
* The @a source may be a path to the corresponding device file, or @c NULL.
|
||||||
|
* The @a target path must lead to an existing directory, or @c NULL. In case
|
||||||
|
* @a target is @c NULL, the root file system will be mounted. The @a data
|
||||||
|
* parameter will be forwarded to the file system initialization handler. The
|
||||||
|
* file system type is selected by @a filesystemtype and may be one of
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_DEVFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_DOSFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_FTPFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_IMFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_MINIIMFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_NFS,
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_RFS, or
|
||||||
|
* - RTEMS_FILESYSTEM_TYPE_TFTPFS.
|
||||||
|
*
|
||||||
|
* Only configured or registered file system types are available. You can add
|
||||||
|
* file system types to your application configuration with
|
||||||
|
* - CONFIGURE_FILESYSTEM_DEVFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_DOSFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_FTPFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_IMFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_MINIIMFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_NFS,
|
||||||
|
* - CONFIGURE_FILESYSTEM_RFS, and
|
||||||
|
* - CONFIGURE_FILESYSTEM_TFTPFS.
|
||||||
|
*
|
||||||
|
* @see rtems_filesystem_register() and mount_and_make_target_path().
|
||||||
|
*
|
||||||
|
* @retval 0 Successful operation.
|
||||||
|
* @retval -1 An error occured. The @c errno indicates the error.
|
||||||
|
*/
|
||||||
int mount(
|
int mount(
|
||||||
const char *source,
|
const char *source,
|
||||||
const char *target,
|
const char *target,
|
||||||
@@ -723,10 +749,72 @@ int mount_and_make_target_path(
|
|||||||
const void *data
|
const void *data
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Boot Time Mount Table Structure
|
* @brief Per file system type routine.
|
||||||
|
*
|
||||||
|
* @see rtems_filesystem_iterate().
|
||||||
|
*
|
||||||
|
* @retval true Stop the iteration.
|
||||||
|
* @retval false Continue the iteration.
|
||||||
*/
|
*/
|
||||||
|
typedef bool (*rtems_per_filesystem_routine)(
|
||||||
|
const rtems_filesystem_table_t *fs_entry,
|
||||||
|
void *arg
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Iterates over all file system types.
|
||||||
|
*
|
||||||
|
* For each file system type the @a routine will be called with the entry and
|
||||||
|
* the @a routine_arg parameter.
|
||||||
|
*
|
||||||
|
* Do not register or unregister file system types in @a routine.
|
||||||
|
*
|
||||||
|
* The iteration is protected by the IO library mutex.
|
||||||
|
*
|
||||||
|
* @retval true Iteration stopped due to @a routine return status.
|
||||||
|
* @retval false Iteration through all entries.
|
||||||
|
*/
|
||||||
|
bool rtems_filesystem_iterate(
|
||||||
|
rtems_per_filesystem_routine routine,
|
||||||
|
void *routine_arg
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Per file system mount routine.
|
||||||
|
*
|
||||||
|
* @see rtems_filesystem_mount_iterate().
|
||||||
|
*
|
||||||
|
* @retval true Stop the iteration.
|
||||||
|
* @retval false Continue the iteration.
|
||||||
|
*/
|
||||||
|
typedef bool (*rtems_per_filesystem_mount_routine)(
|
||||||
|
const rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||||
|
void *arg
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Iterates over all file system mounts.
|
||||||
|
*
|
||||||
|
* For each file system mount the @a routine will be called with the entry and
|
||||||
|
* the @a routine_arg parameter.
|
||||||
|
*
|
||||||
|
* Do not mount or unmount file systems in @a routine.
|
||||||
|
*
|
||||||
|
* The iteration is protected by the IO library mutex.
|
||||||
|
*
|
||||||
|
* @retval true Iteration stopped due to @a routine return status.
|
||||||
|
* @retval false Iteration through all entries.
|
||||||
|
*/
|
||||||
|
bool
|
||||||
|
rtems_filesystem_mount_iterate(
|
||||||
|
rtems_per_filesystem_mount_routine routine,
|
||||||
|
void *routine_arg
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Boot time mount table entry.
|
||||||
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *type;
|
const char *type;
|
||||||
rtems_filesystem_options_t fsoptions;
|
rtems_filesystem_options_t fsoptions;
|
||||||
@@ -737,17 +825,6 @@ typedef struct {
|
|||||||
extern const rtems_filesystem_mount_table_t *rtems_filesystem_mount_table;
|
extern const rtems_filesystem_mount_table_t *rtems_filesystem_mount_table;
|
||||||
extern const int rtems_filesystem_mount_table_size;
|
extern const int rtems_filesystem_mount_table_size;
|
||||||
|
|
||||||
typedef void (*rtems_libio_init_functions_t)(void);
|
|
||||||
extern rtems_libio_init_functions_t rtems_libio_init_helper;
|
|
||||||
|
|
||||||
void open_dev_console(void);
|
|
||||||
|
|
||||||
typedef void (*rtems_libio_supp_functions_t)(void);
|
|
||||||
extern rtems_libio_supp_functions_t rtems_libio_supp_helper;
|
|
||||||
|
|
||||||
typedef void (*rtems_fs_init_functions_t)(void);
|
|
||||||
extern rtems_fs_init_functions_t rtems_fs_init_helper;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates a directory and all its parrent directories according to
|
* @brief Creates a directory and all its parrent directories according to
|
||||||
* @a path.
|
* @a path.
|
||||||
@@ -831,6 +908,26 @@ int rtems_termios_dequeue_characters(
|
|||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The pathconf setting for a file system.
|
||||||
|
*/
|
||||||
|
#define rtems_filesystem_pathconf(_mte) ((_mte)->pathconf_limits_and_options)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The type of file system. Its name.
|
||||||
|
*/
|
||||||
|
#define rtems_filesystem_type(_mte) ((_mte)->type)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The mount point of a file system.
|
||||||
|
*/
|
||||||
|
#define rtems_filesystem_mount_point(_mte) ((_mte)->target)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief The device entry of a file system.
|
||||||
|
*/
|
||||||
|
#define rtems_filesystem_mount_device(_mte) ((_mte)->dev)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -39,11 +39,6 @@ extern "C" {
|
|||||||
extern rtems_id rtems_libio_semaphore;
|
extern rtems_id rtems_libio_semaphore;
|
||||||
extern const rtems_filesystem_file_handlers_r rtems_filesystem_null_handlers;
|
extern const rtems_filesystem_file_handlers_r rtems_filesystem_null_handlers;
|
||||||
|
|
||||||
/*
|
|
||||||
* Mount table list.
|
|
||||||
*/
|
|
||||||
extern rtems_chain_control rtems_filesystem_mount_table_control;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* File descriptor Table Information
|
* File descriptor Table Information
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -37,40 +37,39 @@ typedef struct {
|
|||||||
rtems_filesystem_table_t entry;
|
rtems_filesystem_table_t entry;
|
||||||
} filesystem_node;
|
} filesystem_node;
|
||||||
|
|
||||||
RTEMS_CHAIN_DEFINE_EMPTY(filesystem_chain);
|
static RTEMS_CHAIN_DEFINE_EMPTY(filesystem_chain);
|
||||||
|
|
||||||
void
|
bool rtems_filesystem_iterate(
|
||||||
rtems_filesystem_iterate(
|
|
||||||
rtems_per_filesystem_routine routine,
|
rtems_per_filesystem_routine routine,
|
||||||
void *routine_arg
|
void *routine_arg
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
|
const rtems_filesystem_table_t *table_entry = &rtems_filesystem_table [0];
|
||||||
rtems_chain_node *node = NULL;
|
rtems_chain_node *node = NULL;
|
||||||
|
bool stop = false;
|
||||||
|
|
||||||
while ( table_entry->type ) {
|
while ( table_entry->type && !stop ) {
|
||||||
if ( !(*routine)( table_entry, routine_arg ) ) {
|
stop = (*routine)( table_entry, routine_arg );
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
++table_entry;
|
++table_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !stop ) {
|
||||||
rtems_libio_lock();
|
rtems_libio_lock();
|
||||||
for (
|
for (
|
||||||
node = rtems_chain_first( &filesystem_chain );
|
node = rtems_chain_first( &filesystem_chain );
|
||||||
!rtems_chain_is_tail( &filesystem_chain, node );
|
!rtems_chain_is_tail( &filesystem_chain, node ) && !stop;
|
||||||
node = rtems_chain_next( node )
|
node = rtems_chain_next( node )
|
||||||
) {
|
) {
|
||||||
const filesystem_node *fsn = (filesystem_node *) node;
|
const filesystem_node *fsn = (filesystem_node *) node;
|
||||||
|
|
||||||
if ( !(*routine)( &fsn->entry, routine_arg ) ) {
|
stop = (*routine)( &fsn->entry, routine_arg );
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rtems_libio_unlock();
|
rtems_libio_unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return stop;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char *type;
|
const char *type;
|
||||||
rtems_filesystem_fsmount_me_t mount_h;
|
rtems_filesystem_fsmount_me_t mount_h;
|
||||||
@@ -81,7 +80,7 @@ static bool find_handler(const rtems_filesystem_table_t *entry, void *arg)
|
|||||||
find_arg *fa = arg;
|
find_arg *fa = arg;
|
||||||
|
|
||||||
if ( strcmp( entry->type, fa->type ) != 0 ) {
|
if ( strcmp( entry->type, fa->type ) != 0 ) {
|
||||||
return true;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
fa->mount_h = entry->mount_h;
|
fa->mount_h = entry->mount_h;
|
||||||
|
|
||||||
|
|||||||
@@ -36,10 +36,7 @@
|
|||||||
|
|
||||||
#include <rtems/libio_.h>
|
#include <rtems/libio_.h>
|
||||||
|
|
||||||
/*
|
static RTEMS_CHAIN_DEFINE_EMPTY(mount_chain);
|
||||||
* Mount table list.
|
|
||||||
*/
|
|
||||||
RTEMS_CHAIN_DEFINE_EMPTY(rtems_filesystem_mount_table_control);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default pathconfs.
|
* Default pathconfs.
|
||||||
@@ -59,37 +56,12 @@ const rtems_filesystem_limits_and_options_t rtems_filesystem_default_pathconf =
|
|||||||
0 /* posix_vdisable: special char processing, 0=no, 1=yes */
|
0 /* posix_vdisable: special char processing, 0=no, 1=yes */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
static bool is_node_fs_root(
|
||||||
* Is_node_fs_root
|
const rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||||
*
|
void *arg
|
||||||
* This routine will run through the entries that currently exist in the
|
|
||||||
* mount table chain. For each entry in the mount table chain it will
|
|
||||||
* compare the mount tables root node to the node describing the selected
|
|
||||||
* mount point. If any match is found true is returned else false is
|
|
||||||
* returned.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
static bool Is_node_fs_root(
|
|
||||||
rtems_filesystem_location_info_t *loc
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
rtems_chain_node *node = NULL;
|
return arg == mt_entry->mt_fs_root.node_access;
|
||||||
|
|
||||||
/*
|
|
||||||
* For each mount table entry
|
|
||||||
*/
|
|
||||||
for ( node = rtems_chain_first( &rtems_filesystem_mount_table_control );
|
|
||||||
!rtems_chain_is_tail( &rtems_filesystem_mount_table_control, node );
|
|
||||||
node = rtems_chain_next( node ) ) {
|
|
||||||
rtems_filesystem_mount_table_entry_t *mount_table_entry =
|
|
||||||
(rtems_filesystem_mount_table_entry_t *) node;
|
|
||||||
|
|
||||||
if ( mount_table_entry->mt_fs_root.node_access == loc->node_access )
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static rtems_filesystem_mount_table_entry_t *alloc_mount_table_entry(
|
static rtems_filesystem_mount_table_entry_t *alloc_mount_table_entry(
|
||||||
@@ -225,7 +197,7 @@ int mount(
|
|||||||
* You can only mount one file system onto a single mount point.
|
* You can only mount one file system onto a single mount point.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( Is_node_fs_root( &loc ) ){
|
if ( rtems_filesystem_mount_iterate( is_node_fs_root, loc.node_access ) ) {
|
||||||
errno = EBUSY;
|
errno = EBUSY;
|
||||||
goto cleanup_and_bail;
|
goto cleanup_and_bail;
|
||||||
}
|
}
|
||||||
@@ -260,7 +232,7 @@ int mount(
|
|||||||
/*
|
/*
|
||||||
* Do we already have a base file system ?
|
* Do we already have a base file system ?
|
||||||
*/
|
*/
|
||||||
if ( !rtems_chain_is_empty( &rtems_filesystem_mount_table_control ) ) {
|
if ( !rtems_chain_is_empty( &mount_chain ) ) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
goto cleanup_and_bail;
|
goto cleanup_and_bail;
|
||||||
}
|
}
|
||||||
@@ -285,8 +257,9 @@ int mount(
|
|||||||
/*
|
/*
|
||||||
* Add the mount table entry to the mount table chain
|
* Add the mount table entry to the mount table chain
|
||||||
*/
|
*/
|
||||||
rtems_chain_append( &rtems_filesystem_mount_table_control,
|
rtems_libio_lock();
|
||||||
&mt_entry->Node );
|
rtems_chain_append( &mount_chain, &mt_entry->Node );
|
||||||
|
rtems_libio_unlock();
|
||||||
|
|
||||||
if ( !has_target )
|
if ( !has_target )
|
||||||
rtems_filesystem_root = mt_entry->mt_fs_root;
|
rtems_filesystem_root = mt_entry->mt_fs_root;
|
||||||
@@ -303,33 +276,26 @@ cleanup_and_bail:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
bool rtems_filesystem_mount_iterate(
|
||||||
* Get the first entry in the mount table.
|
rtems_per_filesystem_mount_routine routine,
|
||||||
*/
|
void *routine_arg
|
||||||
rtems_filesystem_mount_table_entry_t *
|
|
||||||
rtems_filesystem_mounts_first(
|
|
||||||
void
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
rtems_filesystem_mount_table_entry_t *entry = NULL;
|
rtems_chain_node *node = NULL;
|
||||||
|
bool stop = false;
|
||||||
|
|
||||||
if ( !rtems_chain_is_empty( &rtems_filesystem_mount_table_control ) )
|
rtems_libio_lock();
|
||||||
entry = (rtems_filesystem_mount_table_entry_t *)
|
for (
|
||||||
rtems_chain_first( &rtems_filesystem_mount_table_control );
|
node = rtems_chain_first( &mount_chain );
|
||||||
|
!rtems_chain_is_tail( &mount_chain, node ) && !stop;
|
||||||
|
node = rtems_chain_next( node )
|
||||||
|
) {
|
||||||
|
const rtems_filesystem_mount_table_entry_t *mt_entry =
|
||||||
|
(rtems_filesystem_mount_table_entry_t *) node;
|
||||||
|
|
||||||
return entry;
|
stop = (*routine)( mt_entry, routine_arg );
|
||||||
}
|
}
|
||||||
|
rtems_libio_unlock();
|
||||||
|
|
||||||
/*
|
return stop;
|
||||||
* Get the next entry in the mount table.
|
|
||||||
*/
|
|
||||||
rtems_filesystem_mount_table_entry_t *
|
|
||||||
rtems_filesystem_mounts_next(
|
|
||||||
rtems_filesystem_mount_table_entry_t *entry
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if ( !entry )
|
|
||||||
return NULL;
|
|
||||||
return (rtems_filesystem_mount_table_entry_t *)
|
|
||||||
rtems_chain_next( &entry->Node );
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,6 @@
|
|||||||
|
|
||||||
#include <sys/statvfs.h>
|
#include <sys/statvfs.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Data structures and routines private to mount/unmount pair.
|
|
||||||
*/
|
|
||||||
extern rtems_chain_control rtems_filesystem_mount_table_control;
|
|
||||||
|
|
||||||
int
|
int
|
||||||
statvfs (const char *path, struct statvfs *sb)
|
statvfs (const char *path, struct statvfs *sb)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <rtems/chain.h>
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
@@ -32,51 +31,14 @@
|
|||||||
|
|
||||||
#include <rtems/libio_.h>
|
#include <rtems/libio_.h>
|
||||||
#include <rtems/seterr.h>
|
#include <rtems/seterr.h>
|
||||||
|
#include <rtems/chain.h>
|
||||||
|
|
||||||
bool rtems_filesystem_nodes_equal(
|
static bool is_fs_below_mount_point(
|
||||||
const rtems_filesystem_location_info_t *loc1,
|
const rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||||
const rtems_filesystem_location_info_t *loc2
|
void *arg
|
||||||
){
|
|
||||||
return ( loc1->node_access == loc2->node_access );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* file_systems_below_this_mountpoint
|
|
||||||
*
|
|
||||||
* This routine will run through the entries that currently exist in the
|
|
||||||
* mount table chain. For each entry in the mount table chain it will
|
|
||||||
* compare the mount tables mt_fs_root to the new_fs_root_node. If any of the
|
|
||||||
* mount table file system root nodes matches the new file system root node
|
|
||||||
* this indicates that we are trying to mount a file system that has already
|
|
||||||
* been mounted. This is not a permitted operation. temp_loc is set to
|
|
||||||
* the root node of the file system being unmounted.
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool file_systems_below_this_mountpoint(
|
|
||||||
const char *path __attribute__((unused)),
|
|
||||||
rtems_filesystem_location_info_t *fs_root_loc,
|
|
||||||
rtems_filesystem_mount_table_entry_t *fs_to_unmount __attribute__((unused))
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
rtems_chain_node *the_node;
|
return arg == mt_entry->mt_point_node.mt_entry;
|
||||||
rtems_filesystem_mount_table_entry_t *the_mount_entry;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Search the mount table for any mount entries referencing this
|
|
||||||
* mount entry.
|
|
||||||
*/
|
|
||||||
|
|
||||||
for ( the_node = rtems_filesystem_mount_table_control.first;
|
|
||||||
!rtems_chain_is_tail( &rtems_filesystem_mount_table_control, the_node );
|
|
||||||
the_node = the_node->next ) {
|
|
||||||
the_mount_entry = ( rtems_filesystem_mount_table_entry_t * )the_node;
|
|
||||||
if (the_mount_entry->mt_point_node.mt_entry == fs_root_loc->mt_entry ) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -114,7 +76,7 @@ int unmount(
|
|||||||
* Verify this is the root node for the file system to be unmounted.
|
* Verify this is the root node for the file system to be unmounted.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( !rtems_filesystem_nodes_equal( fs_root_loc, &loc) ){
|
if ( fs_root_loc->node_access != loc.node_access ){
|
||||||
rtems_filesystem_freenode( &loc );
|
rtems_filesystem_freenode( &loc );
|
||||||
rtems_set_errno_and_return_minus_one( EACCES );
|
rtems_set_errno_and_return_minus_one( EACCES );
|
||||||
}
|
}
|
||||||
@@ -151,7 +113,8 @@ int unmount(
|
|||||||
* Verify there are no file systems below the path specified
|
* Verify there are no file systems below the path specified
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( file_systems_below_this_mountpoint( path, fs_root_loc, mt_entry ) != 0 )
|
if ( rtems_filesystem_mount_iterate( is_fs_below_mount_point,
|
||||||
|
fs_root_loc->mt_entry ) )
|
||||||
rtems_set_errno_and_return_minus_one( EBUSY );
|
rtems_set_errno_and_return_minus_one( EBUSY );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -195,7 +158,9 @@ int unmount(
|
|||||||
* Extract the mount table entry from the chain
|
* Extract the mount table entry from the chain
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rtems_chain_extract( ( rtems_chain_node * ) mt_entry );
|
rtems_libio_lock();
|
||||||
|
rtems_chain_extract( &mt_entry->Node );
|
||||||
|
rtems_libio_unlock();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free the memory node that was allocated in mount
|
* Free the memory node that was allocated in mount
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ nfsMountsShow(FILE *f);
|
|||||||
* Filesystem mount table mount handler. Do not call, use the mount call.
|
* Filesystem mount table mount handler. Do not call, use the mount call.
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
rtems_nfsfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry,
|
rtems_nfs_initialize(rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||||
const void *data);
|
const void *data);
|
||||||
|
|
||||||
/* A utility routine to find the path leading to a
|
/* A utility routine to find the path leading to a
|
||||||
|
|||||||
@@ -1908,7 +1908,7 @@ struct rtems_filesystem_mount_table_entry_tt {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int rtems_nfsfs_initialize(
|
int rtems_nfs_initialize(
|
||||||
rtems_filesystem_mount_table_entry_t *mt_entry,
|
rtems_filesystem_mount_table_entry_t *mt_entry,
|
||||||
const void *data
|
const void *data
|
||||||
)
|
)
|
||||||
@@ -2479,7 +2479,7 @@ struct _rtems_filesystem_operations_table nfs_fs_ops = {
|
|||||||
nfs_chown, /* OPTIONAL; may be NULL */
|
nfs_chown, /* OPTIONAL; may be NULL */
|
||||||
nfs_freenode, /* OPTIONAL; may be NULL; (release node_access) */
|
nfs_freenode, /* OPTIONAL; may be NULL; (release node_access) */
|
||||||
nfs_mount, /* OPTIONAL; may be NULL */
|
nfs_mount, /* OPTIONAL; may be NULL */
|
||||||
rtems_nfsfs_initialize, /* OPTIONAL; may be NULL -- not used anymore */
|
rtems_nfs_initialize, /* OPTIONAL; may be NULL -- not used anymore */
|
||||||
nfs_unmount, /* OPTIONAL; may be NULL */
|
nfs_unmount, /* OPTIONAL; may be NULL */
|
||||||
nfs_fsunmount_me, /* OPTIONAL; may be NULL */
|
nfs_fsunmount_me, /* OPTIONAL; may be NULL */
|
||||||
nfs_utime, /* OPTIONAL; may be NULL */
|
nfs_utime, /* OPTIONAL; may be NULL */
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ static bool print_filesystem(const rtems_filesystem_table_t *entry, void *arg)
|
|||||||
{
|
{
|
||||||
printf("%s ", entry->type);
|
printf("%s ", entry->type);
|
||||||
|
|
||||||
return true;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rtems_shell_main_mount(
|
int rtems_shell_main_mount(
|
||||||
|
|||||||
@@ -188,12 +188,12 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
* Add file filesystems to the default filesystem table.
|
* Add file filesystems to the default filesystem table.
|
||||||
*
|
*
|
||||||
* List of available file systems. You can define as many as you like:
|
* List of available file systems. You can define as many as you like:
|
||||||
* CONFIGURE_FILESYSTEM_miniIMFS - MiniIMFS, use DEVFS now
|
* CONFIGURE_FILESYSTEM_MINIIMFS - MiniIMFS, use DEVFS now
|
||||||
* CONFIGURE_FILESYSTEM_IMFS - In Memory File System (IMFS)
|
* CONFIGURE_FILESYSTEM_IMFS - In Memory File System (IMFS)
|
||||||
* CONFIGURE_FILESYSTEM_DEVFS - Device File System (DSVFS)
|
* CONFIGURE_FILESYSTEM_DEVFS - Device File System (DSVFS)
|
||||||
* CONFIGURE_FILESYSTEM_TFTPFS - TFTP File System, networking enabled
|
* CONFIGURE_FILESYSTEM_TFTPFS - TFTP File System, networking enabled
|
||||||
* CONFIGURE_FILESYSTEM_FTPFS - FTP File System, networking enabled
|
* CONFIGURE_FILESYSTEM_FTPFS - FTP File System, networking enabled
|
||||||
* CONFIGURE_FILESYSTEM_NFSFS - Network File System, networking enabled
|
* CONFIGURE_FILESYSTEM_NFS - Network File System, networking enabled
|
||||||
* CONFIGURE_FILESYSTEM_DOSFS - DOS File System, uses libblock
|
* CONFIGURE_FILESYSTEM_DOSFS - DOS File System, uses libblock
|
||||||
* CONFIGURE_FILESYSTEM_RFS - RTEMS File System (RFS), uses libblock
|
* CONFIGURE_FILESYSTEM_RFS - RTEMS File System (RFS), uses libblock
|
||||||
*
|
*
|
||||||
@@ -215,12 +215,12 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
* been disabled.
|
* been disabled.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIGURE_FILESYSTEM_ALL
|
#ifdef CONFIGURE_FILESYSTEM_ALL
|
||||||
#define CONFIGURE_FILESYSTEM_miniIMFS
|
#define CONFIGURE_FILESYSTEM_MINIIMFS
|
||||||
#define CONFIGURE_FILESYSTEM_IMFS
|
#define CONFIGURE_FILESYSTEM_IMFS
|
||||||
#define CONFIGURE_FILESYSTEM_DEVFS
|
#define CONFIGURE_FILESYSTEM_DEVFS
|
||||||
#define CONFIGURE_FILESYSTEM_TFTPFS
|
#define CONFIGURE_FILESYSTEM_TFTPFS
|
||||||
#define CONFIGURE_FILESYSTEM_FTPFS
|
#define CONFIGURE_FILESYSTEM_FTPFS
|
||||||
#define CONFIGURE_FILESYSTEM_NFSFS
|
#define CONFIGURE_FILESYSTEM_NFS
|
||||||
#define CONFIGURE_FILESYSTEM_DOSFS
|
#define CONFIGURE_FILESYSTEM_DOSFS
|
||||||
#define CONFIGURE_FILESYSTEM_RFS
|
#define CONFIGURE_FILESYSTEM_RFS
|
||||||
#endif
|
#endif
|
||||||
@@ -239,12 +239,12 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
#elif defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
|
#elif defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
|
||||||
#undef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
|
#undef CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
|
||||||
#endif
|
#endif
|
||||||
#undef CONFIGURE_FILESYSTEM_miniIMFS
|
#undef CONFIGURE_FILESYSTEM_MINIIMFS
|
||||||
#undef CONFIGURE_FILESYSTEM_IMFS
|
#undef CONFIGURE_FILESYSTEM_IMFS
|
||||||
#undef CONFIGURE_FILESYSTEM_DEVFS
|
#undef CONFIGURE_FILESYSTEM_DEVFS
|
||||||
#undef CONFIGURE_FILESYSTEM_TFTPFS
|
#undef CONFIGURE_FILESYSTEM_TFTPFS
|
||||||
#undef CONFIGURE_FILESYSTEM_FTPFS
|
#undef CONFIGURE_FILESYSTEM_FTPFS
|
||||||
#undef CONFIGURE_FILESYSTEM_NFSFS
|
#undef CONFIGURE_FILESYSTEM_NFS
|
||||||
#undef CONFIGURE_FILESYSTEM_DOSFS
|
#undef CONFIGURE_FILESYSTEM_DOSFS
|
||||||
#undef CONFIGURE_FILESYSTEM_RFS
|
#undef CONFIGURE_FILESYSTEM_RFS
|
||||||
#endif
|
#endif
|
||||||
@@ -257,7 +257,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
|
#if defined(CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM)
|
||||||
#define CONFIGURE_FILESYSTEM_DEVFS
|
#define CONFIGURE_FILESYSTEM_DEVFS
|
||||||
#elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM)
|
#elif defined(CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM)
|
||||||
#define CONFIGURE_FILESYSTEM_miniIMFS
|
#define CONFIGURE_FILESYSTEM_MINIIMFS
|
||||||
#elif !defined(CONFIGURE_FILESYSTEM_IMFS)
|
#elif !defined(CONFIGURE_FILESYSTEM_IMFS)
|
||||||
#define CONFIGURE_FILESYSTEM_IMFS
|
#define CONFIGURE_FILESYSTEM_IMFS
|
||||||
#endif
|
#endif
|
||||||
@@ -285,7 +285,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
* This defines the miniIMFS file system table entry.
|
* This defines the miniIMFS file system table entry.
|
||||||
*/
|
*/
|
||||||
#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 \
|
#define CONFIGURE_FILESYSTEM_ENTRY_miniIMFS \
|
||||||
{ RTEMS_FILESYSTEM_TYPE_MINIIMFS, miniIMFS_initialize }
|
{ RTEMS_FILESYSTEM_TYPE_MINIIMFS, miniIMFS_initialize }
|
||||||
#endif
|
#endif
|
||||||
@@ -330,13 +330,13 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NFSFS
|
* NFS
|
||||||
*/
|
*/
|
||||||
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS) && \
|
#if !defined(CONFIGURE_FILESYSTEM_ENTRY_NFS) && \
|
||||||
defined(CONFIGURE_FILESYSTEM_NFSFS)
|
defined(CONFIGURE_FILESYSTEM_NFS)
|
||||||
#include <librtemsNfs.h>
|
#include <librtemsNfs.h>
|
||||||
#define CONFIGURE_FILESYSTEM_ENTRY_NFSFS \
|
#define CONFIGURE_FILESYSTEM_ENTRY_NFS \
|
||||||
{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfsfs_initialize }
|
{ RTEMS_FILESYSTEM_TYPE_NFS, rtems_nfs_initialize }
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -381,7 +381,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIGURE_FILESYSTEM_IMFS) || \
|
#if defined(CONFIGURE_FILESYSTEM_IMFS) || \
|
||||||
defined(CONFIGURE_FILESYSTEM_miniIMFS)
|
defined(CONFIGURE_FILESYSTEM_MINIIMFS)
|
||||||
int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
|
int imfs_rq_memfile_bytes_per_block = CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -396,7 +396,7 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
*/
|
*/
|
||||||
#ifndef CONFIGURE_HAS_OWN_FILESYSTEM_TABLE
|
#ifndef CONFIGURE_HAS_OWN_FILESYSTEM_TABLE
|
||||||
const rtems_filesystem_table_t rtems_filesystem_table[] = {
|
const rtems_filesystem_table_t rtems_filesystem_table[] = {
|
||||||
#if defined(CONFIGURE_FILESYSTEM_miniIMFS) && \
|
#if defined(CONFIGURE_FILESYSTEM_MINIIMFS) && \
|
||||||
defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS)
|
defined(CONFIGURE_FILESYSTEM_ENTRY_miniIMFS)
|
||||||
CONFIGURE_FILESYSTEM_ENTRY_miniIMFS,
|
CONFIGURE_FILESYSTEM_ENTRY_miniIMFS,
|
||||||
#endif
|
#endif
|
||||||
@@ -416,9 +416,9 @@ rtems_fs_init_functions_t rtems_fs_init_helper =
|
|||||||
defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS)
|
defined(CONFIGURE_FILESYSTEM_ENTRY_FTPFS)
|
||||||
CONFIGURE_FILESYSTEM_ENTRY_FTPFS,
|
CONFIGURE_FILESYSTEM_ENTRY_FTPFS,
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIGURE_FILESYSTEM_NFSFS) && \
|
#if defined(CONFIGURE_FILESYSTEM_NFS) && \
|
||||||
defined(CONFIGURE_FILESYSTEM_ENTRY_NFSFS)
|
defined(CONFIGURE_FILESYSTEM_ENTRY_NFS)
|
||||||
CONFIGURE_FILESYSTEM_ENTRY_NFSFS,
|
CONFIGURE_FILESYSTEM_ENTRY_NFS,
|
||||||
#endif
|
#endif
|
||||||
#if defined(CONFIGURE_FILESYSTEM_DOSFS) && \
|
#if defined(CONFIGURE_FILESYSTEM_DOSFS) && \
|
||||||
defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS)
|
defined(CONFIGURE_FILESYSTEM_ENTRY_DOSFS)
|
||||||
|
|||||||
Reference in New Issue
Block a user