xref: /aosp_15_r20/external/ltp/include/lapi/fcntl.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  * Copyright (c) 2014 Cyril Hrubis <[email protected]>
4*49cdfc7eSAndroid Build Coastguard Worker  * Copyright (c) Linux Test Project, 2014-2023
5*49cdfc7eSAndroid Build Coastguard Worker  */
6*49cdfc7eSAndroid Build Coastguard Worker 
7*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_FCNTL_H__
8*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_FCNTL_H__
9*49cdfc7eSAndroid Build Coastguard Worker 
10*49cdfc7eSAndroid Build Coastguard Worker #include "config.h"
11*49cdfc7eSAndroid Build Coastguard Worker #include <fcntl.h>
12*49cdfc7eSAndroid Build Coastguard Worker #include <sys/socket.h>
13*49cdfc7eSAndroid Build Coastguard Worker 
14*49cdfc7eSAndroid Build Coastguard Worker /* NOTE: #define _GNU_SOURCE if you need O_DIRECT in tests */
15*49cdfc7eSAndroid Build Coastguard Worker 
16*49cdfc7eSAndroid Build Coastguard Worker #ifndef O_CLOEXEC
17*49cdfc7eSAndroid Build Coastguard Worker # define O_CLOEXEC 02000000
18*49cdfc7eSAndroid Build Coastguard Worker #endif
19*49cdfc7eSAndroid Build Coastguard Worker 
20*49cdfc7eSAndroid Build Coastguard Worker #ifndef SOCK_CLOEXEC
21*49cdfc7eSAndroid Build Coastguard Worker # define SOCK_CLOEXEC O_CLOEXEC
22*49cdfc7eSAndroid Build Coastguard Worker #endif
23*49cdfc7eSAndroid Build Coastguard Worker 
24*49cdfc7eSAndroid Build Coastguard Worker #ifndef SOCK_NONBLOCK
25*49cdfc7eSAndroid Build Coastguard Worker # define SOCK_NONBLOCK O_NONBLOCK
26*49cdfc7eSAndroid Build Coastguard Worker #endif
27*49cdfc7eSAndroid Build Coastguard Worker 
28*49cdfc7eSAndroid Build Coastguard Worker #ifndef O_TMPFILE
29*49cdfc7eSAndroid Build Coastguard Worker # define O_TMPFILE (020000000 | O_DIRECTORY)
30*49cdfc7eSAndroid Build Coastguard Worker #endif
31*49cdfc7eSAndroid Build Coastguard Worker 
32*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_DUPFD_CLOEXEC
33*49cdfc7eSAndroid Build Coastguard Worker # define F_DUPFD_CLOEXEC 1030
34*49cdfc7eSAndroid Build Coastguard Worker #endif
35*49cdfc7eSAndroid Build Coastguard Worker 
36*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_SETPIPE_SZ
37*49cdfc7eSAndroid Build Coastguard Worker # define F_SETPIPE_SZ 1031
38*49cdfc7eSAndroid Build Coastguard Worker #endif
39*49cdfc7eSAndroid Build Coastguard Worker 
40*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_GETPIPE_SZ
41*49cdfc7eSAndroid Build Coastguard Worker # define F_GETPIPE_SZ 1032
42*49cdfc7eSAndroid Build Coastguard Worker #endif
43*49cdfc7eSAndroid Build Coastguard Worker 
44*49cdfc7eSAndroid Build Coastguard Worker /*
45*49cdfc7eSAndroid Build Coastguard Worker  * Set/Get seals
46*49cdfc7eSAndroid Build Coastguard Worker  */
47*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_ADD_SEALS
48*49cdfc7eSAndroid Build Coastguard Worker # define F_ADD_SEALS     (1033)
49*49cdfc7eSAndroid Build Coastguard Worker #endif
50*49cdfc7eSAndroid Build Coastguard Worker 
51*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_GET_SEALS
52*49cdfc7eSAndroid Build Coastguard Worker # define F_GET_SEALS     (1034)
53*49cdfc7eSAndroid Build Coastguard Worker #endif
54*49cdfc7eSAndroid Build Coastguard Worker 
55*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_SEAL_SEAL
56*49cdfc7eSAndroid Build Coastguard Worker # define F_SEAL_SEAL     0x0001  /* prevent further seals from being set */
57*49cdfc7eSAndroid Build Coastguard Worker #endif
58*49cdfc7eSAndroid Build Coastguard Worker 
59*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_SEAL_SHRINK
60*49cdfc7eSAndroid Build Coastguard Worker # define F_SEAL_SHRINK   0x0002  /* prevent file from shrinking */
61*49cdfc7eSAndroid Build Coastguard Worker #endif
62*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_SEAL_GROW
63*49cdfc7eSAndroid Build Coastguard Worker # define F_SEAL_GROW     0x0004  /* prevent file from growing */
64*49cdfc7eSAndroid Build Coastguard Worker #endif
65*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_SEAL_WRITE
66*49cdfc7eSAndroid Build Coastguard Worker # define F_SEAL_WRITE    0x0008  /* prevent writes */
67*49cdfc7eSAndroid Build Coastguard Worker #endif
68*49cdfc7eSAndroid Build Coastguard Worker 
69*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_OWNER_PGRP
70*49cdfc7eSAndroid Build Coastguard Worker # define F_OWNER_PGRP 2
71*49cdfc7eSAndroid Build Coastguard Worker #endif
72*49cdfc7eSAndroid Build Coastguard Worker 
73*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_OFD_GETLK
74*49cdfc7eSAndroid Build Coastguard Worker # define F_OFD_GETLK	36
75*49cdfc7eSAndroid Build Coastguard Worker #endif
76*49cdfc7eSAndroid Build Coastguard Worker 
77*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_OFD_SETLK
78*49cdfc7eSAndroid Build Coastguard Worker # define F_OFD_SETLK	37
79*49cdfc7eSAndroid Build Coastguard Worker #endif
80*49cdfc7eSAndroid Build Coastguard Worker 
81*49cdfc7eSAndroid Build Coastguard Worker #ifndef F_OFD_SETLKW
82*49cdfc7eSAndroid Build Coastguard Worker # define F_OFD_SETLKW	38
83*49cdfc7eSAndroid Build Coastguard Worker #endif
84*49cdfc7eSAndroid Build Coastguard Worker 
85*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_FDCWD
86*49cdfc7eSAndroid Build Coastguard Worker # define AT_FDCWD -100
87*49cdfc7eSAndroid Build Coastguard Worker #endif
88*49cdfc7eSAndroid Build Coastguard Worker 
89*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_SYMLINK_NOFOLLOW
90*49cdfc7eSAndroid Build Coastguard Worker # define AT_SYMLINK_NOFOLLOW	0x100
91*49cdfc7eSAndroid Build Coastguard Worker #endif
92*49cdfc7eSAndroid Build Coastguard Worker 
93*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_REMOVEDIR
94*49cdfc7eSAndroid Build Coastguard Worker # define AT_REMOVEDIR		0x200
95*49cdfc7eSAndroid Build Coastguard Worker #endif
96*49cdfc7eSAndroid Build Coastguard Worker 
97*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_HANDLE_FID
98*49cdfc7eSAndroid Build Coastguard Worker # define AT_HANDLE_FID		AT_REMOVEDIR
99*49cdfc7eSAndroid Build Coastguard Worker #endif
100*49cdfc7eSAndroid Build Coastguard Worker 
101*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_SYMLINK_FOLLOW
102*49cdfc7eSAndroid Build Coastguard Worker # define AT_SYMLINK_FOLLOW	0x400
103*49cdfc7eSAndroid Build Coastguard Worker #endif
104*49cdfc7eSAndroid Build Coastguard Worker 
105*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_NO_AUTOMOUNT
106*49cdfc7eSAndroid Build Coastguard Worker # define AT_NO_AUTOMOUNT	0x800
107*49cdfc7eSAndroid Build Coastguard Worker #endif
108*49cdfc7eSAndroid Build Coastguard Worker 
109*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_EMPTY_PATH
110*49cdfc7eSAndroid Build Coastguard Worker # define AT_EMPTY_PATH		0x1000
111*49cdfc7eSAndroid Build Coastguard Worker #endif
112*49cdfc7eSAndroid Build Coastguard Worker 
113*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_STATX_SYNC_AS_STAT
114*49cdfc7eSAndroid Build Coastguard Worker # define AT_STATX_SYNC_AS_STAT	0x0000
115*49cdfc7eSAndroid Build Coastguard Worker #endif
116*49cdfc7eSAndroid Build Coastguard Worker 
117*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_STATX_FORCE_SYNC
118*49cdfc7eSAndroid Build Coastguard Worker # define AT_STATX_FORCE_SYNC	0x2000
119*49cdfc7eSAndroid Build Coastguard Worker #endif
120*49cdfc7eSAndroid Build Coastguard Worker 
121*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_STATX_DONT_SYNC
122*49cdfc7eSAndroid Build Coastguard Worker # define AT_STATX_DONT_SYNC	0x4000
123*49cdfc7eSAndroid Build Coastguard Worker #endif
124*49cdfc7eSAndroid Build Coastguard Worker 
125*49cdfc7eSAndroid Build Coastguard Worker #ifndef AT_STATX_SYNC_TYPE
126*49cdfc7eSAndroid Build Coastguard Worker # define AT_STATX_SYNC_TYPE	0x6000
127*49cdfc7eSAndroid Build Coastguard Worker #endif
128*49cdfc7eSAndroid Build Coastguard Worker 
129*49cdfc7eSAndroid Build Coastguard Worker #ifndef O_NOATIME
130*49cdfc7eSAndroid Build Coastguard Worker # define O_NOATIME 01000000
131*49cdfc7eSAndroid Build Coastguard Worker #endif
132*49cdfc7eSAndroid Build Coastguard Worker 
133*49cdfc7eSAndroid Build Coastguard Worker #ifndef O_PATH
134*49cdfc7eSAndroid Build Coastguard Worker # ifdef __sparc__
135*49cdfc7eSAndroid Build Coastguard Worker #  define O_PATH 0x1000000
136*49cdfc7eSAndroid Build Coastguard Worker # else
137*49cdfc7eSAndroid Build Coastguard Worker #  define O_PATH 010000000
138*49cdfc7eSAndroid Build Coastguard Worker # endif
139*49cdfc7eSAndroid Build Coastguard Worker #endif
140*49cdfc7eSAndroid Build Coastguard Worker 
141*49cdfc7eSAndroid Build Coastguard Worker #ifndef FALLOC_FL_KEEP_SIZE
142*49cdfc7eSAndroid Build Coastguard Worker # define FALLOC_FL_KEEP_SIZE 1
143*49cdfc7eSAndroid Build Coastguard Worker #endif
144*49cdfc7eSAndroid Build Coastguard Worker 
145*49cdfc7eSAndroid Build Coastguard Worker #ifndef RENAME_NOREPLACE
146*49cdfc7eSAndroid Build Coastguard Worker # define RENAME_NOREPLACE	(1 << 0)
147*49cdfc7eSAndroid Build Coastguard Worker #endif
148*49cdfc7eSAndroid Build Coastguard Worker 
149*49cdfc7eSAndroid Build Coastguard Worker #ifndef RENAME_EXCHANGE
150*49cdfc7eSAndroid Build Coastguard Worker # define RENAME_EXCHANGE		(1 << 1)
151*49cdfc7eSAndroid Build Coastguard Worker #endif
152*49cdfc7eSAndroid Build Coastguard Worker 
153*49cdfc7eSAndroid Build Coastguard Worker #ifndef RENAME_WHITEOUT
154*49cdfc7eSAndroid Build Coastguard Worker # define RENAME_WHITEOUT		(1 << 2)
155*49cdfc7eSAndroid Build Coastguard Worker #endif
156*49cdfc7eSAndroid Build Coastguard Worker 
157*49cdfc7eSAndroid Build Coastguard Worker /* splice, vmsplice, tee */
158*49cdfc7eSAndroid Build Coastguard Worker 
159*49cdfc7eSAndroid Build Coastguard Worker #ifndef SPLICE_F_NONBLOCK
160*49cdfc7eSAndroid Build Coastguard Worker # define SPLICE_F_NONBLOCK 2
161*49cdfc7eSAndroid Build Coastguard Worker #endif
162*49cdfc7eSAndroid Build Coastguard Worker 
163*49cdfc7eSAndroid Build Coastguard Worker #ifndef MAX_HANDLE_SZ
164*49cdfc7eSAndroid Build Coastguard Worker # define MAX_HANDLE_SZ	128
165*49cdfc7eSAndroid Build Coastguard Worker #endif
166*49cdfc7eSAndroid Build Coastguard Worker 
167*49cdfc7eSAndroid Build Coastguard Worker #define TST_OPEN_NEEDS_MODE(oflag) \
168*49cdfc7eSAndroid Build Coastguard Worker 	(((oflag) & O_CREAT) != 0 || ((oflag) & O_TMPFILE) == O_TMPFILE)
169*49cdfc7eSAndroid Build Coastguard Worker 
170*49cdfc7eSAndroid Build Coastguard Worker #ifndef HAVE_STRUCT_FILE_HANDLE
171*49cdfc7eSAndroid Build Coastguard Worker struct file_handle {
172*49cdfc7eSAndroid Build Coastguard Worker 	unsigned int handle_bytes;
173*49cdfc7eSAndroid Build Coastguard Worker 	int handle_type;
174*49cdfc7eSAndroid Build Coastguard Worker 	/* File identifier.  */
175*49cdfc7eSAndroid Build Coastguard Worker 	unsigned char f_handle[0];
176*49cdfc7eSAndroid Build Coastguard Worker };
177*49cdfc7eSAndroid Build Coastguard Worker #endif /* HAVE_STRUCT_FILE_HANDLE */
178*49cdfc7eSAndroid Build Coastguard Worker 
179*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_FCNTL_H__ */
180