Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b65ce576 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

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
parent 9de56d22
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -16597,9 +16597,15 @@ package android.os {
  public class StatFs {
    ctor public StatFs(java.lang.String);
    method public int getAvailableBlocks();
    method public long getAvailableBlocksLong();
    method public long getAvailableBytes();
    method public int getBlockCount();
    method public long getBlockCountLong();
    method public int getBlockSize();
    method public long getBlockSizeLong();
    method public int getFreeBlocks();
    method public long getFreeBlocksLong();
    method public long getFreeBytes();
    method public void restat(java.lang.String);
  }
+50 −0
Original line number Diff line number Diff line
@@ -64,6 +64,14 @@ public class StatFs {
        return (int) mStat.f_bsize;
    }

    /**
     * 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.
@@ -72,6 +80,14 @@ public class StatFs {
        return (int) mStat.f_blocks;
    }

    /**
     * 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
@@ -82,6 +98,24 @@ public class StatFs {
        return (int) mStat.f_bfree;
    }

    /**
     * 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.
@@ -89,4 +123,20 @@ public class StatFs {
    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;
    }
}