1 /* Definition of `struct statvfs', information about a filesystem. 2 Copyright (C) 1998-2021 Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public 7 License as published by the Free Software Foundation; either 8 version 2.1 of the License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _SYS_STATVFS_H 20 # error "Never include <bits/statvfs.h> directly; use <sys/statvfs.h> instead." 21 #endif 22 23 #include <bits/types.h> 24 25 /* GNU Hurd NOTE: This structure is carefully laid out such that we 26 can use the `file_statfs' RPC to implement `statvfs' and 27 `fstatvfs'. Please keep this file in sync with <bits/statfs.h>, 28 and pay attention to the note in that file. */ 29 30 struct statvfs 31 { 32 unsigned int __f_type; 33 unsigned long int f_bsize; 34 #ifndef __USE_FILE_OFFSET64 35 __fsblkcnt_t f_blocks; 36 __fsblkcnt_t f_bfree; 37 __fsblkcnt_t f_bavail; 38 __fsfilcnt_t f_files; 39 __fsfilcnt_t f_ffree; 40 #else 41 __fsblkcnt64_t f_blocks; 42 __fsblkcnt64_t f_bfree; 43 __fsblkcnt64_t f_bavail; 44 __fsfilcnt64_t f_files; 45 __fsfilcnt64_t f_ffree; 46 #endif 47 __fsid_t f_fsid; 48 unsigned long int f_namemax; /* NOTE: f_namelen in `struct statfs'. */ 49 #ifndef __USE_FILE_OFFSET64 50 __fsfilcnt_t f_favail; 51 #else 52 __fsfilcnt64_t f_favail; 53 #endif 54 unsigned long int f_frsize; 55 unsigned long int f_flag; 56 unsigned int f_spare[3]; 57 }; 58 59 #ifdef __USE_LARGEFILE64 60 struct statvfs64 61 { 62 unsigned int __f_type; 63 unsigned long int f_bsize; 64 __fsblkcnt64_t f_blocks; 65 __fsblkcnt64_t f_bfree; 66 __fsblkcnt64_t f_bavail; 67 __fsfilcnt64_t f_files; 68 __fsfilcnt64_t f_ffree; 69 __fsid_t f_fsid; 70 unsigned long int f_namemax; 71 __fsfilcnt64_t f_favail; 72 unsigned long int f_frsize; 73 unsigned long int f_flag; 74 unsigned int f_spare[3]; 75 }; 76 #endif 77 78 /* Definitions for the flag in `f_flag'. 79 The values for the non-standard flags come from Linux. */ 80 enum 81 { 82 ST_RDONLY = 1, 83 #define ST_RDONLY ST_RDONLY 84 ST_NOSUID = 2 85 #define ST_NOSUID ST_NOSUID 86 #ifdef __USE_GNU 87 , 88 ST_NOEXEC = 8, 89 # define ST_NOEXEC ST_NOEXEC 90 ST_SYNCHRONOUS = 16, 91 # define ST_SYNCHRONOUS ST_SYNCHRONOUS 92 ST_NOATIME = 32, /* Do not update access times. */ 93 # define ST_NOATIME ST_NOATIME 94 ST_RELATIME = 64 /* Update atime relative to mtime/ctime. */ 95 # define ST_RELATIME ST_RELATIME 96 #endif 97 }; 98