From 063e4950f41fb7a64504eb68531eaed1b70e8dde Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 2 Nov 1999 16:27:05 +0000 Subject: Added support for configuring base filesystem. First attempt at a full mount table at initialization. This is the wrong place to mount filesystems 2-n since no device drivers are initialized yet. --- cpukit/libcsupport/src/base_fs.c | 58 ++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 17 deletions(-) (limited to 'cpukit/libcsupport/src/base_fs.c') diff --git a/cpukit/libcsupport/src/base_fs.c b/cpukit/libcsupport/src/base_fs.c index ee342afad6..e5be922a40 100644 --- a/cpukit/libcsupport/src/base_fs.c +++ b/cpukit/libcsupport/src/base_fs.c @@ -41,9 +41,13 @@ mode_t rtems_filesystem_umask; void rtems_filesystem_initialize( void ) { #if !defined(RTEMS_UNIX) +#if 0 + int i; +#endif int status; - rtems_filesystem_mount_table_entry_t *first_entry; - + rtems_filesystem_mount_table_entry_t *entry; + rtems_filesystem_mount_table_t *mt; + /* * Set the default umask to "022". */ @@ -54,26 +58,22 @@ void rtems_filesystem_initialize( void ) /* * mount the first filesystem. - * - * NOTE: XXX This really needs to be read from a table of filesystems - * to mount initially and the miniIMFS needs to be shaken out. */ - status = mount( - &first_entry, - &IMFS_ops, - RTEMS_FILESYSTEM_READ_WRITE, - NULL, - NULL ); - if( status == -1 ){ - rtems_fatal_error_occurred( 0xABCD0002 ); - } + if ( rtems_filesystem_mount_table_size == 0 ) + rtems_fatal_error_occurred( 0xABCD0001 ); - rtems_filesystem_link_counts = 0; + mt = &rtems_filesystem_mount_table[0]; - rtems_filesystem_root = first_entry->mt_fs_root; + status = mount( + &entry, mt->fs_ops, mt->fsoptions, mt->device, mt->mount_point ); - rtems_filesystem_current = rtems_filesystem_root; + if ( status == -1 ) + rtems_fatal_error_occurred( 0xABCD0002 ); + + rtems_filesystem_link_counts = 0; + rtems_filesystem_root = entry->mt_fs_root; + rtems_filesystem_current = rtems_filesystem_root; /* * Traditionally RTEMS devices are under "/dev" so install this directory. @@ -86,5 +86,29 @@ void rtems_filesystem_initialize( void ) status = mkdir( "/dev", S_IRWXU | S_IRWXG | S_IRWXO ); if ( status != 0 ) rtems_fatal_error_occurred( 0xABCD0003 ); + + /* + * This code if if'ed 0 out because you can't mount another + * filesystem properly until the mount point it will be + * mounted onto is created. Moreover, if it is going to + * use a device, then it is REALLY unfair to attempt this + * before device drivers are initialized. + */ + +#if 0 + /* + * Now if there are other filesystems to mount, go for it. + */ + + for ( i=1 ; i < rtems_filesystem_mount_table_size ; i++ ) { + mt = &rtems_filesystem_mount_table[0]; + + status = mount( + &entry, mt->fs_ops, mt->fsoptions, mt->device, mt->mount_point ); + + if ( status == -1 ) + rtems_fatal_error_occurred( 0xABCD0003 ); + } +#endif #endif } -- cgit v1.2.3