xref: /aosp_15_r20/bionic/libc/include/sys/statvfs.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * Copyright (C) 2013 The Android Open Source Project
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*8d67ca89SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*8d67ca89SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*8d67ca89SAndroid Build Coastguard Worker  *
8*8d67ca89SAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*8d67ca89SAndroid Build Coastguard Worker  *
10*8d67ca89SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*8d67ca89SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*8d67ca89SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*8d67ca89SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*8d67ca89SAndroid Build Coastguard Worker  * limitations under the License.
15*8d67ca89SAndroid Build Coastguard Worker  */
16*8d67ca89SAndroid Build Coastguard Worker 
17*8d67ca89SAndroid Build Coastguard Worker #pragma once
18*8d67ca89SAndroid Build Coastguard Worker 
19*8d67ca89SAndroid Build Coastguard Worker /**
20*8d67ca89SAndroid Build Coastguard Worker  * @file sys/statvfs.h
21*8d67ca89SAndroid Build Coastguard Worker  * @brief Filesystem statistics.
22*8d67ca89SAndroid Build Coastguard Worker  */
23*8d67ca89SAndroid Build Coastguard Worker 
24*8d67ca89SAndroid Build Coastguard Worker #include <sys/cdefs.h>
25*8d67ca89SAndroid Build Coastguard Worker 
26*8d67ca89SAndroid Build Coastguard Worker #include <stdint.h>
27*8d67ca89SAndroid Build Coastguard Worker #include <sys/types.h>
28*8d67ca89SAndroid Build Coastguard Worker 
29*8d67ca89SAndroid Build Coastguard Worker __BEGIN_DECLS
30*8d67ca89SAndroid Build Coastguard Worker 
31*8d67ca89SAndroid Build Coastguard Worker #define __STATVFS64_BODY \
32*8d67ca89SAndroid Build Coastguard Worker   /** Block size. */ \
33*8d67ca89SAndroid Build Coastguard Worker   unsigned long f_bsize; \
34*8d67ca89SAndroid Build Coastguard Worker   /** Fragment size. */ \
35*8d67ca89SAndroid Build Coastguard Worker   unsigned long f_frsize; \
36*8d67ca89SAndroid Build Coastguard Worker   /** Total size of filesystem in `f_frsize` blocks. */ \
37*8d67ca89SAndroid Build Coastguard Worker   fsblkcnt_t f_blocks; \
38*8d67ca89SAndroid Build Coastguard Worker   /** Number of free blocks. */ \
39*8d67ca89SAndroid Build Coastguard Worker   fsblkcnt_t f_bfree; \
40*8d67ca89SAndroid Build Coastguard Worker   /** Number of free blocks for non-root. */ \
41*8d67ca89SAndroid Build Coastguard Worker   fsblkcnt_t f_bavail; \
42*8d67ca89SAndroid Build Coastguard Worker   /** Number of inodes. */ \
43*8d67ca89SAndroid Build Coastguard Worker   fsfilcnt_t f_files; \
44*8d67ca89SAndroid Build Coastguard Worker   /** Number of free inodes. */ \
45*8d67ca89SAndroid Build Coastguard Worker   fsfilcnt_t f_ffree; \
46*8d67ca89SAndroid Build Coastguard Worker   /** Number of free inodes for non-root. */ \
47*8d67ca89SAndroid Build Coastguard Worker   fsfilcnt_t f_favail; \
48*8d67ca89SAndroid Build Coastguard Worker   /** Filesystem id. */ \
49*8d67ca89SAndroid Build Coastguard Worker   unsigned long f_fsid; \
50*8d67ca89SAndroid Build Coastguard Worker   /** Mount flags. (See `ST_` constants.) */ \
51*8d67ca89SAndroid Build Coastguard Worker   unsigned long f_flag; \
52*8d67ca89SAndroid Build Coastguard Worker   /** Maximum filename length. */ \
53*8d67ca89SAndroid Build Coastguard Worker   unsigned long f_namemax; \
54*8d67ca89SAndroid Build Coastguard Worker 
55*8d67ca89SAndroid Build Coastguard Worker #if defined(__LP64__)
56*8d67ca89SAndroid Build Coastguard Worker #define __STATVFS64_CODA uint32_t __f_reserved[6];
57*8d67ca89SAndroid Build Coastguard Worker #else
58*8d67ca89SAndroid Build Coastguard Worker #define __STATVFS64_CODA
59*8d67ca89SAndroid Build Coastguard Worker #endif
60*8d67ca89SAndroid Build Coastguard Worker 
61*8d67ca89SAndroid Build Coastguard Worker struct statvfs { __STATVFS64_BODY __STATVFS64_CODA };
62*8d67ca89SAndroid Build Coastguard Worker 
63*8d67ca89SAndroid Build Coastguard Worker struct statvfs64 { __STATVFS64_BODY __STATVFS64_CODA };
64*8d67ca89SAndroid Build Coastguard Worker 
65*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: mounted read-only. */
66*8d67ca89SAndroid Build Coastguard Worker #define ST_RDONLY      0x0001
67*8d67ca89SAndroid Build Coastguard Worker 
68*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: setuid/setgid ignored. */
69*8d67ca89SAndroid Build Coastguard Worker #define ST_NOSUID      0x0002
70*8d67ca89SAndroid Build Coastguard Worker 
71*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: access to device files disallowed. */
72*8d67ca89SAndroid Build Coastguard Worker #define ST_NODEV       0x0004
73*8d67ca89SAndroid Build Coastguard Worker 
74*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: execution disallowed. */
75*8d67ca89SAndroid Build Coastguard Worker #define ST_NOEXEC      0x0008
76*8d67ca89SAndroid Build Coastguard Worker 
77*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: writes synced immediately. */
78*8d67ca89SAndroid Build Coastguard Worker #define ST_SYNCHRONOUS 0x0010
79*8d67ca89SAndroid Build Coastguard Worker 
80*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: mandatory locking permitted. */
81*8d67ca89SAndroid Build Coastguard Worker #define ST_MANDLOCK    0x0040
82*8d67ca89SAndroid Build Coastguard Worker 
83*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: access times not updated. */
84*8d67ca89SAndroid Build Coastguard Worker #define ST_NOATIME     0x0400
85*8d67ca89SAndroid Build Coastguard Worker 
86*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: directory access times not updated. */
87*8d67ca89SAndroid Build Coastguard Worker #define ST_NODIRATIME  0x0800
88*8d67ca89SAndroid Build Coastguard Worker 
89*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: see `MS_RELATIME`. */
90*8d67ca89SAndroid Build Coastguard Worker #define ST_RELATIME    0x1000
91*8d67ca89SAndroid Build Coastguard Worker 
92*8d67ca89SAndroid Build Coastguard Worker /** Flag for `f_flag` in `struct statvfs`: don't follow symlinks. */
93*8d67ca89SAndroid Build Coastguard Worker #define ST_NOSYMFOLLOW 0x2000
94*8d67ca89SAndroid Build Coastguard Worker 
95*8d67ca89SAndroid Build Coastguard Worker /**
96*8d67ca89SAndroid Build Coastguard Worker  * [statvfs(3)](https://man7.org/linux/man-pages/man3/statvfs.3.html)
97*8d67ca89SAndroid Build Coastguard Worker  * queries filesystem statistics for the given path.
98*8d67ca89SAndroid Build Coastguard Worker  *
99*8d67ca89SAndroid Build Coastguard Worker  * Returns 0 on success, and returns -1 and sets `errno` on failure.
100*8d67ca89SAndroid Build Coastguard Worker  */
101*8d67ca89SAndroid Build Coastguard Worker int statvfs(const char* _Nonnull __path, struct statvfs* _Nonnull __buf);
102*8d67ca89SAndroid Build Coastguard Worker 
103*8d67ca89SAndroid Build Coastguard Worker /**
104*8d67ca89SAndroid Build Coastguard Worker  * [fstatvfs(3)](https://man7.org/linux/man-pages/man3/fstatvfs.3.html)
105*8d67ca89SAndroid Build Coastguard Worker  * queries filesystem statistics for the given file descriptor.
106*8d67ca89SAndroid Build Coastguard Worker  *
107*8d67ca89SAndroid Build Coastguard Worker  * Returns 0 on success, and returns -1 and sets `errno` on failure.
108*8d67ca89SAndroid Build Coastguard Worker  */
109*8d67ca89SAndroid Build Coastguard Worker int fstatvfs(int __fd, struct statvfs* _Nonnull __buf);
110*8d67ca89SAndroid Build Coastguard Worker 
111*8d67ca89SAndroid Build Coastguard Worker /** Equivalent to statvfs() . */
112*8d67ca89SAndroid Build Coastguard Worker int statvfs64(const char* _Nonnull __path, struct statvfs64* _Nonnull __buf);
113*8d67ca89SAndroid Build Coastguard Worker 
114*8d67ca89SAndroid Build Coastguard Worker /** Equivalent to fstatvfs(). */
115*8d67ca89SAndroid Build Coastguard Worker int fstatvfs64(int __fd, struct statvfs64* _Nonnull __buf);
116*8d67ca89SAndroid Build Coastguard Worker 
117*8d67ca89SAndroid Build Coastguard Worker __END_DECLS
118