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.
This commit is contained in:
Joel Sherrill
1999-11-02 16:27:05 +00:00
parent a504ced35b
commit 063e4950f4
3 changed files with 123 additions and 51 deletions

View File

@@ -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 ){
if ( rtems_filesystem_mount_table_size == 0 )
rtems_fatal_error_occurred( 0xABCD0001 );
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( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0;
rtems_filesystem_root = first_entry->mt_fs_root;
rtems_filesystem_current = rtems_filesystem_root;
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
}

View File

@@ -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 ){
if ( rtems_filesystem_mount_table_size == 0 )
rtems_fatal_error_occurred( 0xABCD0001 );
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( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0;
rtems_filesystem_root = first_entry->mt_fs_root;
rtems_filesystem_current = rtems_filesystem_root;
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
}

View File

@@ -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 ){
if ( rtems_filesystem_mount_table_size == 0 )
rtems_fatal_error_occurred( 0xABCD0001 );
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( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0;
rtems_filesystem_root = first_entry->mt_fs_root;
rtems_filesystem_current = rtems_filesystem_root;
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
}