summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-02 16:27:05 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-02 16:27:05 +0000
commit063e4950f41fb7a64504eb68531eaed1b70e8dde (patch)
treee9c1867c467bd7923d92802e13274e1b3f687c0b /c/src/lib
parentInstall imfs.h so base filesystem can be configured or IMFS mounted (diff)
downloadrtems-063e4950f41fb7a64504eb68531eaed1b70e8dde.tar.bz2
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.
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libc/base_fs.c58
1 files changed, 41 insertions, 17 deletions
diff --git a/c/src/lib/libc/base_fs.c b/c/src/lib/libc/base_fs.c
index ee342afad6..e5be922a40 100644
--- a/c/src/lib/libc/base_fs.c
+++ b/c/src/lib/libc/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
}