10b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes/*
2438cb9e440d250c8aa5daf4fae0c400dce8b1499Elliott Hughes * Copyright (C) 2011 The Android Open Source Project
30b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes *
40b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License");
50b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * you may not use this file except in compliance with the License.
60b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * You may obtain a copy of the License at
70b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes *
80b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes *      http://www.apache.org/licenses/LICENSE-2.0
90b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes *
100b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * Unless required by applicable law or agreed to in writing, software
110b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
120b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * See the License for the specific language governing permissions and
140b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes * limitations under the License.
150b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes */
160b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes
175d930cadc8f62aee5f18e7921296fe66a54f18abElliott Hughespackage android.system;
180b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes
19fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughesimport libcore.util.Objects;
20fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughes
210b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes/**
2234721e8e0051258e87848bae25baf50722b4c76aElliott Hughes * File information returned by {@link Os#fstatvfs} and {@link Os#statvfs}.
230b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes */
24a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughespublic final class StructStatVfs {
25a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** File system block size (used for block counts). */
26a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_bsize; /*unsigned long*/
27a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
28a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Fundamental file system block size. */
29a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_frsize; /*unsigned long*/
30a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
31a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Total block count. */
32a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_blocks; /*fsblkcnt_t*/
33a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
34a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Free block count. */
35a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_bfree; /*fsblkcnt_t*/
36a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
37a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Free block count available to non-root. */
38a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_bavail; /*fsblkcnt_t*/
39a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
40a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Total file (inode) count. */
41a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_files; /*fsfilcnt_t*/
42a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
43a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Free file (inode) count. */
44a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_ffree; /*fsfilcnt_t*/
45a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
46a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Free file (inode) count available to non-root. */
47a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_favail; /*fsfilcnt_t*/
48a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
49a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** File system id. */
50a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_fsid; /*unsigned long*/
51a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
52a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Bit mask of ST_* flags. */
53a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_flag; /*unsigned long*/
54a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
55a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  /** Maximum filename length. */
56a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes  public final long f_namemax; /*unsigned long*/
57a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes
5834721e8e0051258e87848bae25baf50722b4c76aElliott Hughes  /**
5934721e8e0051258e87848bae25baf50722b4c76aElliott Hughes   * Constructs an instance with the given field values.
6034721e8e0051258e87848bae25baf50722b4c76aElliott Hughes   */
615d930cadc8f62aee5f18e7921296fe66a54f18abElliott Hughes  public StructStatVfs(long f_bsize, long f_frsize, long f_blocks, long f_bfree, long f_bavail,
62a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes                long f_files, long f_ffree, long f_favail,
63a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes                long f_fsid, long f_flag, long f_namemax) {
64a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_bsize = f_bsize;
65a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_frsize = f_frsize;
66a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_blocks = f_blocks;
67a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_bfree = f_bfree;
68a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_bavail = f_bavail;
69a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_files = f_files;
70a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_ffree = f_ffree;
71a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_favail = f_favail;
72a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_fsid = f_fsid;
73a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_flag = f_flag;
74a2fac5bc3fc5c182e738aa4f3fcc64bb38dfbf5fElliott Hughes    this.f_namemax = f_namemax;
755d930cadc8f62aee5f18e7921296fe66a54f18abElliott Hughes  }
76fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughes
77fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughes  @Override public String toString() {
78fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughes    return Objects.toString(this);
79fe77f817b540f2a66c17486a618bb9083a22070eElliott Hughes  }
800b29a1fecc601de2f642ded891726ac3e460d74bElliott Hughes}
81