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 ) void rtems_filesystem_initialize( void )
{ {
#if !defined(RTEMS_UNIX) #if !defined(RTEMS_UNIX)
#if 0
int i;
#endif
int status; 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". * Set the default umask to "022".
*/ */
@@ -54,26 +58,22 @@ void rtems_filesystem_initialize( void )
/* /*
* mount the first filesystem. * 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( if ( rtems_filesystem_mount_table_size == 0 )
&first_entry, rtems_fatal_error_occurred( 0xABCD0001 );
&IMFS_ops,
RTEMS_FILESYSTEM_READ_WRITE, mt = &rtems_filesystem_mount_table[0];
NULL,
NULL ); status = mount(
if( status == -1 ){ &entry, mt->fs_ops, mt->fsoptions, mt->device, mt->mount_point );
if ( status == -1 )
rtems_fatal_error_occurred( 0xABCD0002 ); rtems_fatal_error_occurred( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0; rtems_filesystem_link_counts = 0;
rtems_filesystem_root = entry->mt_fs_root;
rtems_filesystem_root = first_entry->mt_fs_root; rtems_filesystem_current = rtems_filesystem_root;
rtems_filesystem_current = rtems_filesystem_root;
/* /*
* Traditionally RTEMS devices are under "/dev" so install this directory. * 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 ); status = mkdir( "/dev", S_IRWXU | S_IRWXG | S_IRWXO );
if ( status != 0 ) if ( status != 0 )
rtems_fatal_error_occurred( 0xABCD0003 ); 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 #endif
} }

View File

@@ -41,9 +41,13 @@ mode_t rtems_filesystem_umask;
void rtems_filesystem_initialize( void ) void rtems_filesystem_initialize( void )
{ {
#if !defined(RTEMS_UNIX) #if !defined(RTEMS_UNIX)
#if 0
int i;
#endif
int status; 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". * Set the default umask to "022".
*/ */
@@ -54,26 +58,22 @@ void rtems_filesystem_initialize( void )
/* /*
* mount the first filesystem. * 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( if ( rtems_filesystem_mount_table_size == 0 )
&first_entry, rtems_fatal_error_occurred( 0xABCD0001 );
&IMFS_ops,
RTEMS_FILESYSTEM_READ_WRITE, mt = &rtems_filesystem_mount_table[0];
NULL,
NULL ); status = mount(
if( status == -1 ){ &entry, mt->fs_ops, mt->fsoptions, mt->device, mt->mount_point );
if ( status == -1 )
rtems_fatal_error_occurred( 0xABCD0002 ); rtems_fatal_error_occurred( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0; rtems_filesystem_link_counts = 0;
rtems_filesystem_root = entry->mt_fs_root;
rtems_filesystem_root = first_entry->mt_fs_root; rtems_filesystem_current = rtems_filesystem_root;
rtems_filesystem_current = rtems_filesystem_root;
/* /*
* Traditionally RTEMS devices are under "/dev" so install this directory. * 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 ); status = mkdir( "/dev", S_IRWXU | S_IRWXG | S_IRWXO );
if ( status != 0 ) if ( status != 0 )
rtems_fatal_error_occurred( 0xABCD0003 ); 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 #endif
} }

View File

@@ -41,9 +41,13 @@ mode_t rtems_filesystem_umask;
void rtems_filesystem_initialize( void ) void rtems_filesystem_initialize( void )
{ {
#if !defined(RTEMS_UNIX) #if !defined(RTEMS_UNIX)
#if 0
int i;
#endif
int status; 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". * Set the default umask to "022".
*/ */
@@ -54,26 +58,22 @@ void rtems_filesystem_initialize( void )
/* /*
* mount the first filesystem. * 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( if ( rtems_filesystem_mount_table_size == 0 )
&first_entry, rtems_fatal_error_occurred( 0xABCD0001 );
&IMFS_ops,
RTEMS_FILESYSTEM_READ_WRITE, mt = &rtems_filesystem_mount_table[0];
NULL,
NULL ); status = mount(
if( status == -1 ){ &entry, mt->fs_ops, mt->fsoptions, mt->device, mt->mount_point );
if ( status == -1 )
rtems_fatal_error_occurred( 0xABCD0002 ); rtems_fatal_error_occurred( 0xABCD0002 );
}
rtems_filesystem_link_counts = 0; rtems_filesystem_link_counts = 0;
rtems_filesystem_root = entry->mt_fs_root;
rtems_filesystem_root = first_entry->mt_fs_root; rtems_filesystem_current = rtems_filesystem_root;
rtems_filesystem_current = rtems_filesystem_root;
/* /*
* Traditionally RTEMS devices are under "/dev" so install this directory. * 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 ); status = mkdir( "/dev", S_IRWXU | S_IRWXG | S_IRWXO );
if ( status != 0 ) if ( status != 0 )
rtems_fatal_error_occurred( 0xABCD0003 ); 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 #endif
} }