diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-11-02 16:27:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-11-02 16:27:05 +0000 |
commit | 063e4950f41fb7a64504eb68531eaed1b70e8dde (patch) | |
tree | e9c1867c467bd7923d92802e13274e1b3f687c0b /c/src | |
parent | Install imfs.h so base filesystem can be configured or IMFS mounted (diff) | |
download | rtems-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')
-rw-r--r-- | c/src/exec/libcsupport/src/base_fs.c | 58 | ||||
-rw-r--r-- | c/src/lib/libc/base_fs.c | 58 |
2 files changed, 82 insertions, 34 deletions
diff --git a/c/src/exec/libcsupport/src/base_fs.c b/c/src/exec/libcsupport/src/base_fs.c index ee342afad6..e5be922a40 100644 --- a/c/src/exec/libcsupport/src/base_fs.c +++ b/c/src/exec/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 } 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 } |