package ru.serce.jnrfuse.struct; import jnr.ffi.BaseStruct; import jnr.posix.util.Platform; /** * Information about a mounted file system * * @author Sergey Tselovalnikov * @since 31.05.15 */ public class Statvfs extends BaseStruct { /* Definitions for the flag in `f_flag'.*/ public static final int ST_RDONLY = 1; /* Mount read-only. */ public static final int ST_NOSUID = 2; /* Ignore suid and sgid bits. */ public static final int ST_NODEV = 4; /* Disallow access to device special files. */ public static final int ST_NOEXEC = 8; /* Disallow program execution. */ public static final int ST_SYNCHRONOUS = 16;/* Writes are synced at once. */ public static final int ST_MANDLOCK = 64; /* Allow mandatory locks on an FS. */ public static final int ST_WRITE = 128; /* Write on file/directory/symlink. */ public static final int ST_APPEND = 256; /* Append-only file. */ public static final int ST_IMMUTABLE = 512; /* Immutable file. */ public static final int ST_NOATIME = 1024; /* Do not update access times. */ public static final int ST_NODIRATIME = 2048;/* Do not update directory access times. */ public static final int ST_RELATIME = 4096; /* Update atime relative to mtime/ctime. */ public Statvfs(jnr.ffi.Runtime runtime) { super(runtime); } public final UnsignedLong f_bsize = new UnsignedLong(); /* file system block size */ public final UnsignedLong f_frsize = new UnsignedLong(); /* fragment size */ public final fsblkcnt64_t f_blocks = new fsblkcnt64_t(); /* size of fs in f_frsize units */ public final fsblkcnt64_t f_bfree = new fsblkcnt64_t(); /* # free blocks */ public final fsblkcnt64_t f_bavail = new fsblkcnt64_t(); /* # free blocks for non-root */ public final fsfilcnt64_t f_files = new fsfilcnt64_t(); /* # inodes */ public final fsfilcnt64_t f_ffree = new fsfilcnt64_t(); /* # free inodes */ public final fsfilcnt64_t f_favail = new fsfilcnt64_t(); /* # free inodes for non-root */ public final UnsignedLong f_fsid = new UnsignedLong(); /* file system ID */ public final Signed32 f_unused; { f_unused = Platform.IS_32_BIT ? new Signed32() : null; } public final UnsignedLong f_flag = new UnsignedLong(); /* mount flags */ public final UnsignedLong f_namemax = new UnsignedLong();/* maximum filename length */ public final Signed32[] __f_spare; { __f_spare = Platform.IS_MAC ? null : array(new Signed32[6]); } public static Statvfs of(jnr.ffi.Pointer pointer) { Statvfs statvfs = new Statvfs(jnr.ffi.Runtime.getSystemRuntime()); statvfs.useMemory(pointer); return statvfs; } }