summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorJeff Sharkey <jsharkey@android.com>2013-02-13 18:31:00 -0800
committerJeff Sharkey <jsharkey@android.com>2013-02-13 18:40:35 -0800
commitb65ce57675ecd983c85dd4d755fe0167f33ecc87 (patch)
tree581b9b0c656872023aefe9bc9fe59ffb05445953 /core/java
parent9de56d220e6fee092e6bc70b3649939f3c0bbda4 (diff)
downloadframeworks_base-b65ce57675ecd983c85dd4d755fe0167f33ecc87.zip
frameworks_base-b65ce57675ecd983c85dd4d755fe0167f33ecc87.tar.gz
frameworks_base-b65ce57675ecd983c85dd4d755fe0167f33ecc87.tar.bz2
Expose longer statfs values, add derived values.
Since fsblkcnt_t is 8 bytes, provide methods to access larger value instead of casting to int. This would start being an issue around 8TB filesystems. Also add convenience methods to calculate values in bytes. Change-Id: Ib924425d8d6d82785466f611ca71800cc1e952b6
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/StatFs.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/core/java/android/os/StatFs.java b/core/java/android/os/StatFs.java
index ca7fdba..60ec0d7 100644
--- a/core/java/android/os/StatFs.java
+++ b/core/java/android/os/StatFs.java
@@ -65,6 +65,14 @@ public class StatFs {
}
/**
+ * The size, in bytes, of a block on the file system. This corresponds to
+ * the Unix {@code statfs.f_bsize} field.
+ */
+ public long getBlockSizeLong() {
+ return mStat.f_bsize;
+ }
+
+ /**
* The total number of blocks on the file system. This corresponds to the
* Unix {@code statfs.f_blocks} field.
*/
@@ -73,6 +81,14 @@ public class StatFs {
}
/**
+ * The size, in bytes, of a block on the file system. This corresponds to
+ * the Unix {@code statfs.f_bsize} field.
+ */
+ public long getBlockCountLong() {
+ return mStat.f_blocks;
+ }
+
+ /**
* The total number of blocks that are free on the file system, including
* reserved blocks (that are not available to normal applications). This
* corresponds to the Unix {@code statfs.f_bfree} field. Most applications
@@ -83,10 +99,44 @@ public class StatFs {
}
/**
+ * The total number of blocks that are free on the file system, including
+ * reserved blocks (that are not available to normal applications). This
+ * corresponds to the Unix {@code statfs.f_bfree} field. Most applications
+ * will want to use {@link #getAvailableBlocks()} instead.
+ */
+ public long getFreeBlocksLong() {
+ return mStat.f_bfree;
+ }
+
+ /**
+ * The number of bytes that are free on the file system, including
+ * reserved blocks (that are not available to normal applications).
+ */
+ public long getFreeBytes() {
+ return mStat.f_bfree * mStat.f_bsize;
+ }
+
+ /**
* The number of blocks that are free on the file system and available to
* applications. This corresponds to the Unix {@code statfs.f_bavail} field.
*/
public int getAvailableBlocks() {
return (int) mStat.f_bavail;
}
+
+ /**
+ * The number of blocks that are free on the file system and available to
+ * applications. This corresponds to the Unix {@code statfs.f_bavail} field.
+ */
+ public long getAvailableBlocksLong() {
+ return mStat.f_bavail;
+ }
+
+ /**
+ * The number of bytes that are free on the file system and available to
+ * applications.
+ */
+ public long getAvailableBytes() {
+ return mStat.f_bavail * mStat.f_bsize;
+ }
}