diff options
author | Chris Johns <chrisj@rtems.org> | 2010-05-15 06:29:55 +0000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2010-05-15 06:29:55 +0000 |
commit | 8162008060cd4d8243a973d69f2765bc9507efca (patch) | |
tree | 5e8d4699638dffc3113d6166bca3c10d95d004a6 /cpukit | |
parent | 2010-05-14 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff) | |
download | rtems-8162008060cd4d8243a973d69f2765bc9507efca.tar.bz2 |
2010-05-15 Chris Johns <chrisj@rtems.org>
* libfs/src/imfs/imfs_initsupp.c, libfs/src/imfs/imfs.h,
libfs/src/imfs/imfs_stat.c: PR1419. Return a device for the IMFS.
Diffstat (limited to 'cpukit')
-rw-r--r-- | cpukit/ChangeLog | 5 | ||||
-rw-r--r-- | cpukit/libfs/src/imfs/imfs.h | 7 | ||||
-rw-r--r-- | cpukit/libfs/src/imfs/imfs_initsupp.c | 2 | ||||
-rw-r--r-- | cpukit/libfs/src/imfs/imfs_stat.c | 9 |
4 files changed, 23 insertions, 0 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 30ffa7f865..9bfbdc14f1 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2010-05-15 Chris Johns <chrisj@rtems.org> + + * libfs/src/imfs/imfs_initsupp.c, libfs/src/imfs/imfs.h, + libfs/src/imfs/imfs_stat.c: PR1419. Return a device for the IMFS. + 2010-05-14 Chris Johns <chrisj@rtems.org> * libblock/src/flashdisk.c: Clean up on initialisation errors. diff --git a/cpukit/libfs/src/imfs/imfs.h b/cpukit/libfs/src/imfs/imfs.h index ae682c06fd..218e9c9381 100644 --- a/cpukit/libfs/src/imfs/imfs.h +++ b/cpukit/libfs/src/imfs/imfs.h @@ -156,6 +156,12 @@ typedef union { } IMFS_types_union; /* + * Major device number for the IMFS. This is not a real device number because + * the IMFS is just a file system and does not have a driver. + */ +#define IMFS_DEVICE_MAJOR_NUMBER (0xfffe) + +/* * Maximum length of a "basename" of an IMFS file/node. */ @@ -213,6 +219,7 @@ struct IMFS_jnode_tt { } while (0) typedef struct { + int instance; ino_t ino_count; const rtems_filesystem_file_handlers_r *memfile_handlers; const rtems_filesystem_file_handlers_r *directory_handlers; diff --git a/cpukit/libfs/src/imfs/imfs_initsupp.c b/cpukit/libfs/src/imfs/imfs_initsupp.c index 510915e922..1bfaf2de8c 100644 --- a/cpukit/libfs/src/imfs/imfs_initsupp.c +++ b/cpukit/libfs/src/imfs/imfs_initsupp.c @@ -69,6 +69,7 @@ int IMFS_initialize_support( const rtems_filesystem_file_handlers_r *directory_handlers ) { + static int imfs_instance; IMFS_fs_info_t *fs_info; IMFS_jnode_t *jnode; @@ -103,6 +104,7 @@ int IMFS_initialize_support( * Set st_ino for the root to 1. */ + fs_info->instance = imfs_instance++; fs_info->ino_count = 1; fs_info->memfile_handlers = memfile_handlers; fs_info->directory_handlers = directory_handlers; diff --git a/cpukit/libfs/src/imfs/imfs_stat.c b/cpukit/libfs/src/imfs/imfs_stat.c index 533899e259..29867faa7b 100644 --- a/cpukit/libfs/src/imfs/imfs_stat.c +++ b/cpukit/libfs/src/imfs/imfs_stat.c @@ -27,6 +27,7 @@ int IMFS_stat( struct stat *buf ) { + IMFS_fs_info_t *fs_info; IMFS_jnode_t *the_jnode; IMFS_device_t *io; @@ -58,6 +59,14 @@ int IMFS_stat( break; } + /* + * The device number of the IMFS is the major number and the minor is the + * instance. + */ + fs_info = loc->mt_entry->fs_info; + buf->st_dev = + rtems_filesystem_make_dev_t( IMFS_DEVICE_MAJOR_NUMBER, fs_info->instance ); + buf->st_mode = the_jnode->st_mode; buf->st_nlink = the_jnode->st_nlink; buf->st_ino = the_jnode->st_ino; |