cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

statfs.h (1827B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _LINUX_STATFS_H
      3#define _LINUX_STATFS_H
      4
      5#include <linux/types.h>
      6#include <asm/statfs.h>
      7#include <asm/byteorder.h>
      8
      9struct kstatfs {
     10	long f_type;
     11	long f_bsize;
     12	u64 f_blocks;
     13	u64 f_bfree;
     14	u64 f_bavail;
     15	u64 f_files;
     16	u64 f_ffree;
     17	__kernel_fsid_t f_fsid;
     18	long f_namelen;
     19	long f_frsize;
     20	long f_flags;
     21	long f_spare[4];
     22};
     23
     24/*
     25 * Definitions for the flag in f_flag.
     26 *
     27 * Generally these flags are equivalent to the MS_ flags used in the mount
     28 * ABI.  The exception is ST_VALID which has the same value as MS_REMOUNT
     29 * which doesn't make any sense for statfs.
     30 */
     31#define ST_RDONLY	0x0001	/* mount read-only */
     32#define ST_NOSUID	0x0002	/* ignore suid and sgid bits */
     33#define ST_NODEV	0x0004	/* disallow access to device special files */
     34#define ST_NOEXEC	0x0008	/* disallow program execution */
     35#define ST_SYNCHRONOUS	0x0010	/* writes are synced at once */
     36#define ST_VALID	0x0020	/* f_flags support is implemented */
     37#define ST_MANDLOCK	0x0040	/* allow mandatory locks on an FS */
     38/* 0x0080 used for ST_WRITE in glibc */
     39/* 0x0100 used for ST_APPEND in glibc */
     40/* 0x0200 used for ST_IMMUTABLE in glibc */
     41#define ST_NOATIME	0x0400	/* do not update access times */
     42#define ST_NODIRATIME	0x0800	/* do not update directory access times */
     43#define ST_RELATIME	0x1000	/* update atime relative to mtime/ctime */
     44#define ST_NOSYMFOLLOW	0x2000	/* do not follow symlinks */
     45
     46struct dentry;
     47extern int vfs_get_fsid(struct dentry *dentry, __kernel_fsid_t *fsid);
     48
     49static inline __kernel_fsid_t u64_to_fsid(u64 v)
     50{
     51	return (__kernel_fsid_t){.val = {(u32)v, (u32)(v>>32)}};
     52}
     53
     54/* Fold 16 bytes uuid to 64 bit fsid */
     55static inline __kernel_fsid_t uuid_to_fsid(__u8 *uuid)
     56{
     57	return u64_to_fsid(le64_to_cpup((void *)uuid) ^
     58		le64_to_cpup((void *)(uuid + sizeof(u64))));
     59}
     60
     61#endif