mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-26 14:18:20 +00:00
2010-02-23 Chris Johns <chrisj@rtems.org>
* libfs/src/rfs/rtems-rfs-dir.c: Fix printf format warning for a
64bit off_t.
* libfs/src/rfs/rtems-rfs-file-system.h: Add a macro to get the
file system flags.
* libfs/src/rfs/rtems-rfs-group.c,
libfs/src/rfs/rtems-rfs-group.h: Add rtems_rfs_group_usage.
* libfs/src/rfs/rtems-rfs-rtems.c: Fill in all the fields in the
statvfs struct.
* libfs/src/rfs/rtems-rfs-shell.c: Use rtems_rfs_group_usage.
This commit is contained in:
@@ -1,3 +1,19 @@
|
||||
2010-02-23 Chris Johns <chrisj@rtems.org>
|
||||
|
||||
* libfs/src/rfs/rtems-rfs-dir.c: Fix printf format warning for a
|
||||
64bit off_t.
|
||||
|
||||
* libfs/src/rfs/rtems-rfs-file-system.h: Add a macro to get the
|
||||
file system flags.
|
||||
|
||||
* libfs/src/rfs/rtems-rfs-group.c,
|
||||
libfs/src/rfs/rtems-rfs-group.h: Add rtems_rfs_group_usage.
|
||||
|
||||
* libfs/src/rfs/rtems-rfs-rtems.c: Fill in all the fields in the
|
||||
statvfs struct.
|
||||
|
||||
* libfs/src/rfs/rtems-rfs-shell.c: Use rtems_rfs_group_usage.
|
||||
|
||||
2010-02-20 Chris Johns <chrisj@rtems.org>
|
||||
|
||||
* libfs/src/dosfs/fat.c, libfs/src/rfs/rtems-rfs-buffer.c: Block
|
||||
|
||||
@@ -609,7 +609,7 @@ rtems_rfs_dir_read (rtems_rfs_file_system* fs,
|
||||
dirent->d_namlen = elength;
|
||||
|
||||
if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))
|
||||
printf ("rtems-rfs: dir-read: found off:%ld ino:%ld name=%s\n",
|
||||
printf ("rtems-rfs: dir-read: found off:%Ld ino:%ld name=%s\n",
|
||||
dirent->d_off, dirent->d_ino, dirent->d_name);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -245,6 +245,12 @@ struct rtems_rfs_file_system_t
|
||||
void* user;
|
||||
};
|
||||
|
||||
/**
|
||||
* Return the flags.
|
||||
*
|
||||
* @param _fs Pointer to the file system.
|
||||
*/
|
||||
#define rtems_rfs_fs_flags(_f) ((_f)->flags)
|
||||
/**
|
||||
* Should bitmap buffers be released when finished ?
|
||||
*
|
||||
|
||||
@@ -314,3 +314,33 @@ rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
rtems_rfs_group_usage (rtems_rfs_file_system* fs,
|
||||
size_t* blocks,
|
||||
size_t* inodes)
|
||||
{
|
||||
int g;
|
||||
|
||||
*blocks = 0;
|
||||
*inodes = 0;
|
||||
|
||||
for (g = 0; g < fs->group_count; g++)
|
||||
{
|
||||
rtems_rfs_group* group = &fs->groups[g];
|
||||
*blocks +=
|
||||
rtems_rfs_bitmap_map_size(&group->block_bitmap) -
|
||||
rtems_rfs_bitmap_map_free (&group->block_bitmap);
|
||||
*inodes +=
|
||||
rtems_rfs_bitmap_map_size (&group->inode_bitmap) -
|
||||
rtems_rfs_bitmap_map_free (&group->inode_bitmap);
|
||||
}
|
||||
|
||||
if (*blocks > rtems_rfs_fs_blocks (fs))
|
||||
*blocks = rtems_rfs_fs_blocks (fs);
|
||||
if (*inodes > rtems_rfs_fs_inodes (fs))
|
||||
*inodes = rtems_rfs_fs_inodes (fs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -148,4 +148,16 @@ int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,
|
||||
rtems_rfs_bitmap_bit no,
|
||||
bool* state);
|
||||
|
||||
/**
|
||||
* Determine the number of blocks and inodes used.
|
||||
*
|
||||
* @param fs The file system data.
|
||||
* @prarm blocks The number of blocks used.
|
||||
* @param inodes The number of inodes used.
|
||||
* @return int The error number (errno). No error if 0.
|
||||
*/
|
||||
int rtems_rfs_group_usage (rtems_rfs_file_system* fs,
|
||||
size_t* blocks,
|
||||
size_t* inodes);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1101,12 +1101,21 @@ rtems_rfs_rtems_statvfs (rtems_filesystem_location_info_t* pathloc,
|
||||
struct statvfs* sb)
|
||||
{
|
||||
rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);
|
||||
size_t blocks;
|
||||
size_t inodes;
|
||||
|
||||
sb->f_bsize = rtems_rfs_fs_block_size (fs);
|
||||
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
|
||||
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
|
||||
|
||||
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
|
||||
rtems_rfs_group_usage (fs, &blocks, &inodes);
|
||||
|
||||
sb->f_bsize = rtems_rfs_fs_block_size (fs);
|
||||
sb->f_frsize = rtems_rfs_fs_media_block_size (fs);
|
||||
sb->f_blocks = rtems_rfs_fs_media_blocks (fs);
|
||||
sb->f_bfree = rtems_rfs_fs_blocks (fs) - blocks;
|
||||
sb->f_bavail = sb->f_bfree;
|
||||
sb->f_files = rtems_rfs_fs_inodes (fs) - inodes;
|
||||
sb->f_ffree = sb->f_files;
|
||||
sb->f_favail = sb->f_files;
|
||||
sb->f_fsid = RTEMS_RFS_SB_MAGIC;
|
||||
sb->f_flag = rtems_rfs_fs_flags (fs);
|
||||
sb->f_namemax = rtems_rfs_fs_max_name (fs);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -140,20 +140,8 @@ rtems_rfs_shell_data (rtems_rfs_file_system* fs, int argc, char *argv[])
|
||||
|
||||
rtems_rfs_shell_lock_rfs (fs);
|
||||
|
||||
blocks = 0;
|
||||
inodes = 0;
|
||||
rtems_rfs_group_usage (fs, &blocks, &inodes);
|
||||
|
||||
for (g = 0; g < fs->group_count; g++)
|
||||
{
|
||||
rtems_rfs_group* group = &fs->groups[g];
|
||||
blocks +=
|
||||
rtems_rfs_bitmap_map_size(&group->block_bitmap) -
|
||||
rtems_rfs_bitmap_map_free (&group->block_bitmap);
|
||||
inodes +=
|
||||
rtems_rfs_bitmap_map_size (&group->inode_bitmap) -
|
||||
rtems_rfs_bitmap_map_free (&group->inode_bitmap);
|
||||
}
|
||||
|
||||
rtems_rfs_shell_unlock_rfs (fs);
|
||||
|
||||
bpcent = (blocks * 1000) / rtems_rfs_fs_blocks (fs);
|
||||
|
||||
Reference in New Issue
Block a user