summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/imfs/imfs_initsupp.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/imfs/imfs_initsupp.c')
-rw-r--r--cpukit/libfs/src/imfs/imfs_initsupp.c71
1 files changed, 29 insertions, 42 deletions
diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c
index fee4990169..5f0df250e5 100644
--- a/cpukit/libfs/src/imfs/imfs_initsupp.c
+++ b/cpukit/libfs/src/imfs/imfs_initsupp.c
@@ -104,51 +104,38 @@ IMFS_jnode_t *IMFS_initialize_node(
int IMFS_initialize_support(
rtems_filesystem_mount_table_entry_t *mt_entry,
- const rtems_filesystem_operations_table *op_table,
- const IMFS_mknod_control *const mknod_controls[ IMFS_TYPE_COUNT ]
+ const void *data
)
{
- int rv = 0;
- IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
-
- if ( fs_info != NULL ) {
- IMFS_jnode_t *root_node;
-
- memcpy(
- fs_info->mknod_controls,
- mknod_controls,
- sizeof( fs_info->mknod_controls )
- );
-
- root_node = IMFS_initialize_node(
- &fs_info->Root_directory.Node,
- &fs_info->mknod_controls[ IMFS_DIRECTORY ]->node_control,
- "",
- 0,
- (S_IFDIR | 0755),
- NULL
- );
- IMFS_assert( root_node != NULL );
-
- mt_entry->fs_info = fs_info;
- mt_entry->ops = op_table;
- mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
- mt_entry->mt_fs_root->location.node_access = root_node;
- IMFS_Set_handlers( &mt_entry->mt_fs_root->location );
- } else {
- errno = ENOMEM;
- rv = -1;
- }
-
- if ( rv == 0 ) {
- IMFS_determine_bytes_per_block(
- &imfs_memfile_bytes_per_block,
- imfs_rq_memfile_bytes_per_block,
- IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
- );
- }
+ const IMFS_mount_data *mount_data = data;
+ IMFS_fs_info_t *fs_info = mount_data->fs_info;
+ IMFS_jnode_t *root_node;
+
+ fs_info->mknod_controls = mount_data->mknod_controls;
+
+ root_node = IMFS_initialize_node(
+ &fs_info->Root_directory.Node,
+ &fs_info->mknod_controls->directory->node_control,
+ "",
+ 0,
+ (S_IFDIR | 0755),
+ NULL
+ );
+ IMFS_assert( root_node != NULL );
+
+ mt_entry->fs_info = fs_info;
+ mt_entry->ops = mount_data->ops;
+ mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
+ mt_entry->mt_fs_root->location.node_access = root_node;
+ IMFS_Set_handlers( &mt_entry->mt_fs_root->location );
+
+ IMFS_determine_bytes_per_block(
+ &imfs_memfile_bytes_per_block,
+ imfs_rq_memfile_bytes_per_block,
+ IMFS_MEMFILE_DEFAULT_BYTES_PER_BLOCK
+ );
- return rv;
+ return 0;
}
int IMFS_node_clone( rtems_filesystem_location_info_t *loc )