Mercurial > ecos
changeset 2261:04c9eb8c07e9
* src/romfs.c (romfs_getinfo): Support for block usage call.
* tests/romfs1.c (main): Add file system block usage test.
| author | asl |
|---|---|
| date | Fri, 04 Aug 2006 09:21:33 +0000 |
| parents | 32d66e0b0050 |
| children | c393118a9636 |
| files | packages/fs/rom/current/ChangeLog packages/fs/rom/current/src/romfs.c packages/fs/rom/current/tests/romfs1.c |
| diffstat | 3 files changed, 33 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/fs/rom/current/ChangeLog +++ b/packages/fs/rom/current/ChangeLog @@ -1,3 +1,8 @@ +2006-08-04 Andrew Lunn <andrew.lunn@ascom.ch> + + * src/romfs.c (romfs_getinfo): Support for block usage call. + * tests/romfs1.c (main): Add file system block usage test. + 2006-02-15 Andrew Lunn <andrew.lunn@ascom.ch> Peter Korsgaard <jacmet@sunsite.dk>
--- a/packages/fs/rom/current/src/romfs.c +++ b/packages/fs/rom/current/src/romfs.c @@ -800,7 +800,7 @@ static int romfs_stat ( cyg_mtab_ent // ------------------------------------------------------------------------- // romfs_getinfo() -// Getinfo. Currently only support pathconf(). +// Getinfo. Currently only support pathconf() and file system block usage static int romfs_getinfo ( cyg_mtab_entry *mte, cyg_dir dir, const char *name, int key, void *buf, int len ) @@ -819,7 +819,16 @@ static int romfs_getinfo ( cyg_mtab_ent case FS_INFO_CONF: err = romfs_pathconf( ds.node, (struct cyg_pathconf_info *)buf ); break; - +#if defined(CYGSEM_FILEIO_BLOCK_USAGE) + case FS_INFO_BLOCK_USAGE: { + struct cyg_fs_block_usage *usage = (struct cyg_fs_block_usage *) buf; + struct romfs_disk *disk = (struct romfs_disk*) mte->data; + usage->total_blocks = disk->disksize; + usage->free_blocks = 0; + usage->block_size = 1; + return ENOERR; + } +#endif default: err = EINVAL; }
--- a/packages/fs/rom/current/tests/romfs1.c +++ b/packages/fs/rom/current/tests/romfs1.c @@ -91,11 +91,11 @@ MTAB_ENTRY( romfs_mte1, //========================================================================== #define SHOW_RESULT( _fn, _res ) \ -diag_printf("<FAIL>: " #_fn "() returned %d %s\n", _res, _res<0?strerror(errno):""); + diag_printf("<FAIL>: " #_fn "() returned %d %s\n", (int)_res, _res<0?strerror(errno):""); #define CHKFAIL_TYPE( _fn, _res, _type ) { \ if ( _res != -1 ) \ - diag_printf("<FAIL>: " #_fn "() returned %d (expected -1)\n", _res); \ + diag_printf("<FAIL>: " #_fn "() returned %d (expected -1)\n", (int)_res); \ else if ( errno != _type ) \ diag_printf("<FAIL>: " #_fn "() failed with errno %d (%s),\n expected %d (%s)\n", errno, strerror(errno), _type, strerror(_type) ); \ } @@ -166,7 +166,7 @@ static void listdir( char *name, int sta } else { - diag_printf(" [mode %08x ino %08x nlink %d size %d]", + diag_printf(" [mode %08x ino %08x nlink %d size %ld]", sbuf.st_mode,sbuf.st_ino,sbuf.st_nlink,sbuf.st_size); } } @@ -286,6 +286,9 @@ int main( int argc, char **argv ) { int err; char address[16]; +#if defined(CYGSEM_FILEIO_BLOCK_USAGE) + struct cyg_fs_block_usage usage; +#endif CYG_TEST_INIT(); @@ -377,6 +380,17 @@ int main( int argc, char **argv ) CHKFAIL_TYPE( umount, err, EINVAL ); #endif +#if defined(CYGSEM_FILEIO_BLOCK_USAGE) + err = cyg_fs_getinfo("/", FS_INFO_BLOCK_USAGE, &usage, sizeof(usage)); + if( err < 0 ) SHOW_RESULT( cyg_fs_getinfo, err ); + diag_printf("<INFO>: total size: %6lld blocks, %10lld bytes\n", + usage.total_blocks, usage.total_blocks * usage.block_size); + diag_printf("<INFO>: free size: %6lld blocks, %10lld bytes\n", + usage.free_blocks, usage.free_blocks * usage.block_size); + diag_printf("<INFO>: block size: %6u bytes\n", usage.block_size); +#endif + // -------------------------------------------------------------- + err = umount( "/" ); if( err < 0 ) SHOW_RESULT( umount, err );
