xref: /aosp_15_r20/external/ltp/include/lapi/fs.h (revision 49cdfc7efb34551c7342be41a7384b9c40d7cab7)
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 Worker static 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