1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Referred from linux kernel include/uapi/linux/fs.h 4*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2019 Petr Vorel <[email protected]> 5*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) Zilogic Systems Pvt. Ltd., 2018 6*49cdfc7eSAndroid Build Coastguard Worker * Email: [email protected] 7*49cdfc7eSAndroid Build Coastguard Worker */ 8*49cdfc7eSAndroid Build Coastguard Worker 9*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_FS_H__ 10*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_FS_H__ 11*49cdfc7eSAndroid Build Coastguard Worker 12*49cdfc7eSAndroid Build Coastguard Worker #include "config.h" 13*49cdfc7eSAndroid Build Coastguard Worker #ifndef HAVE_MOUNT_SETATTR 14*49cdfc7eSAndroid Build Coastguard Worker # ifdef HAVE_LINUX_FS_H 15*49cdfc7eSAndroid Build Coastguard Worker # include <linux/fs.h> 16*49cdfc7eSAndroid Build Coastguard Worker # endif 17*49cdfc7eSAndroid Build Coastguard Worker #endif 18*49cdfc7eSAndroid Build Coastguard Worker 19*49cdfc7eSAndroid Build Coastguard Worker #include <sys/user.h> 20*49cdfc7eSAndroid Build Coastguard Worker #include <limits.h> 21*49cdfc7eSAndroid Build Coastguard Worker #include "lapi/abisize.h" 22*49cdfc7eSAndroid Build Coastguard Worker 23*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_IOC_GETFLAGS 24*49cdfc7eSAndroid Build Coastguard Worker # define FS_IOC_GETFLAGS _IOR('f', 1, long) 25*49cdfc7eSAndroid Build Coastguard Worker #endif 26*49cdfc7eSAndroid Build Coastguard Worker 27*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_IOC_SETFLAGS 28*49cdfc7eSAndroid Build Coastguard Worker # define FS_IOC_SETFLAGS _IOW('f', 2, long) 29*49cdfc7eSAndroid Build Coastguard Worker #endif 30*49cdfc7eSAndroid Build Coastguard Worker 31*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_COMPR_FL 32*49cdfc7eSAndroid Build Coastguard Worker # define FS_COMPR_FL 0x00000004 /* Compress file */ 33*49cdfc7eSAndroid Build Coastguard Worker #endif 34*49cdfc7eSAndroid Build Coastguard Worker 35*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_IMMUTABLE_FL 36*49cdfc7eSAndroid Build Coastguard Worker # define FS_IMMUTABLE_FL 0x00000010 /* Immutable file */ 37*49cdfc7eSAndroid Build Coastguard Worker #endif 38*49cdfc7eSAndroid Build Coastguard Worker 39*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_APPEND_FL 40*49cdfc7eSAndroid Build Coastguard Worker # define FS_APPEND_FL 0x00000020 /* writes to file may only append */ 41*49cdfc7eSAndroid Build Coastguard Worker #endif 42*49cdfc7eSAndroid Build Coastguard Worker 43*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_NODUMP_FL 44*49cdfc7eSAndroid Build Coastguard Worker # define FS_NODUMP_FL 0x00000040 /* do not dump file */ 45*49cdfc7eSAndroid Build Coastguard Worker #endif 46*49cdfc7eSAndroid Build Coastguard Worker 47*49cdfc7eSAndroid Build Coastguard Worker #ifndef FS_VERITY_FL 48*49cdfc7eSAndroid Build Coastguard Worker # define FS_VERITY_FL 0x00100000 /* Verity protected inode */ 49*49cdfc7eSAndroid Build Coastguard Worker #endif 50*49cdfc7eSAndroid Build Coastguard Worker 51*49cdfc7eSAndroid Build Coastguard Worker /* 52*49cdfc7eSAndroid Build Coastguard Worker * Helper function to get MAX_LFS_FILESIZE. 53*49cdfc7eSAndroid Build Coastguard Worker * Missing PAGE_SHIFT on some libc prevents defining MAX_LFS_FILESIZE. 54*49cdfc7eSAndroid Build Coastguard Worker * 55*49cdfc7eSAndroid Build Coastguard Worker * 64 bit: macro taken from kernel from include/linux/fs.h 56*49cdfc7eSAndroid Build Coastguard Worker * 32 bit: own implementation 57*49cdfc7eSAndroid Build Coastguard Worker */ tst_max_lfs_filesize(void)58*49cdfc7eSAndroid Build Coastguard Workerstatic inline long long tst_max_lfs_filesize(void) 59*49cdfc7eSAndroid Build Coastguard Worker { 60*49cdfc7eSAndroid Build Coastguard Worker #ifdef TST_ABI64 61*49cdfc7eSAndroid Build Coastguard Worker return LLONG_MAX; 62*49cdfc7eSAndroid Build Coastguard Worker #else 63*49cdfc7eSAndroid Build Coastguard Worker long page_size = getpagesize(); 64*49cdfc7eSAndroid Build Coastguard Worker long long ret = ULONG_MAX; 65*49cdfc7eSAndroid Build Coastguard Worker 66*49cdfc7eSAndroid Build Coastguard Worker while (page_size >>= 1) 67*49cdfc7eSAndroid Build Coastguard Worker ret <<= 1; 68*49cdfc7eSAndroid Build Coastguard Worker 69*49cdfc7eSAndroid Build Coastguard Worker return ret; 70*49cdfc7eSAndroid Build Coastguard Worker #endif 71*49cdfc7eSAndroid Build Coastguard Worker } 72*49cdfc7eSAndroid Build Coastguard Worker 73*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_FS_H__ */ 74