blob: 6fb1eabc80868da8dadff43a1c662f7cc6a9a921 [file] [log] [blame]
/*
* sys/vfs.h
*/
#ifndef _SYS_VFS_H
#define _SYS_VFS_H
#include <stdint.h>
#include <klibc/extern.h>
#include <sys/types.h>
#include <bitsize.h>
#include <klibc/sysconfig.h>
/* struct statfs64 -- there seems to be two standards -
one for 32 and one for 64 bits, and they're incompatible.
Worse, some 64-bit platforms seem to use the 32-bit layout.
Of course, there is no includable header that does this well. */
#if _KLIBC_STATFS_F_TYPE_64
struct statfs {
uint64_t f_type;
uint64_t f_bsize;
uint64_t f_blocks;
uint64_t f_bfree;
uint64_t f_bavail;
uint64_t f_files;
uint64_t f_ffree;
__kernel_fsid_t f_fsid;
uint64_t f_namelen;
uint64_t f_frsize;
uint64_t f_spare[5];
};
#elif _KLIBC_STATFS_F_TYPE_32B
struct statfs {
uint32_t f_type;
uint32_t f_bsize;
uint32_t f_frsize;
uint32_t __pad;
uint64_t f_blocks;
uint64_t f_bfree;
uint64_t f_files;
uint64_t f_ffree;
uint64_t f_bavail;
__kernel_fsid_t f_fsid;
uint32_t f_namelen;
uint32_t f_spare[6];
};
#else /* not _KLIBC_STATFS_F_TYPE_64 */
struct statfs {
uint32_t f_type;
uint32_t f_bsize;
uint64_t f_blocks;
uint64_t f_bfree;
uint64_t f_bavail;
uint64_t f_files;
uint64_t f_ffree;
__kernel_fsid_t f_fsid;
uint32_t f_namelen;
uint32_t f_frsize;
uint32_t f_spare[5];
};
#endif /* _KLIBC_STATFS_F_TYPE_64 */
__extern int statfs(const char *, struct statfs *);
__extern int fstatfs(int, struct statfs *);
/* Various filesystem types */
#define ADFS_SUPER_MAGIC 0xadf5
#define AFFS_SUPER_MAGIC 0xadff
#define AFS_FS_MAGIC 0x6B414653 /* 'kAFS' */
#define AUTOFS_SUPER_MAGIC 0x0187
#define BFS_MAGIC 0x1BADFACE
#define CAPIFS_SUPER_MAGIC 0x434e
#define CIFS_MAGIC_NUMBER 0xFF534D42
#define CODA_SUPER_MAGIC 0x73757245
#define CRAMFS_MAGIC 0x28cd3d45
#define DEVFS_SUPER_MAGIC 0x1373
#define DEVPTS_SUPER_MAGIC 0x1cd1
#define EFS_SUPER_MAGIC 0x414A53
#define EVENTPOLLFS_MAGIC 0x03111965
#define EXT2_SUPER_MAGIC 0xEF53
#define EXT3_SUPER_MAGIC 0xEF53
#define GADGETFS_MAGIC 0xaee71ee7
#define HFSPLUS_SUPER_MAGIC 0x482b
#define HFS_MFS_SUPER_MAGIC 0xD2D7 /* MFS MDB (super block) */
#define HFS_SUPER_MAGIC 0x4244 /* "BD": HFS MDB (super block) */
#define HPFS_SUPER_MAGIC 0xf995e849
#define HUGETLBFS_MAGIC 0x958458f6
#define HWGFS_MAGIC 0x12061983
#define IBMASMFS_MAGIC 0x66726f67
#define ISOFS_SUPER_MAGIC 0x9660
#define JFFS2_SUPER_MAGIC 0x72b6
#define JFFS_MAGIC_BITMASK 0x34383931 /* "1984" */
#define JFFS_MAGIC_SB_BITMASK 0x07c0 /* 1984 */
#define JFS_SUPER_MAGIC 0x3153464a /* "JFS1" */
#define MINIX2_SUPER_MAGIC 0x2468 /* minix V2 fs */
#define MINIX2_SUPER_MAGIC2 0x2478 /* minix V2 fs, 30 char names */
#define MINIX_SUPER_MAGIC 0x137F /* original minix fs */
#define MINIX_SUPER_MAGIC2 0x138F /* minix fs, 30 char names */
#define MSDOS_SUPER_MAGIC 0x4d44 /* MD */
#define NCP_SUPER_MAGIC 0x564c
#define NFS_SUPER_MAGIC 0x6969
#define NFS_SUPER_MAGIC 0x6969
#define OPENPROM_SUPER_MAGIC 0x9fa1
#define OPROFILEFS_MAGIC 0x6f70726f
#define PFMFS_MAGIC 0xa0b4d889
#define PIPEFS_MAGIC 0x50495045
#define PROC_SUPER_MAGIC 0x9fa0
#define QNX4_SUPER_MAGIC 0x002f /* qnx4 fs detection */
#define RAMFS_MAGIC 0x858458f6
#define REISERFS_SUPER_MAGIC 0x52654973
#define ROMFS_MAGIC 0x7275
#define SMB_SUPER_MAGIC 0x517B
#define SOCKFS_MAGIC 0x534F434B
#define SYSFS_MAGIC 0x62656572
#define TMPFS_MAGIC 0x01021994
#define UDF_SUPER_MAGIC 0x15013346
#define UFS_MAGIC 0x00011954
#define UFS_MAGIC_4GB 0x05231994 /* fs > 4 GB && fs_featurebits */
#define UFS_MAGIC_FEA 0x00195612 /* fs_featurebits supported */
#define UFS_MAGIC_LFN 0x00095014 /* fs supports filenames > 14 chars */
#define UFS_MAGIC_SEC 0x00612195 /* B1 security fs */
#define USBDEVICE_SUPER_MAGIC 0x9fa2
#define VXFS_SUPER_MAGIC 0xa501FCF5
#endif /* _SYS_VFS_H */