1570af302Sopenharmony_ci#ifndef	_FCNTL_H
2570af302Sopenharmony_ci#define	_FCNTL_H
3570af302Sopenharmony_ci
4570af302Sopenharmony_ci#ifdef __cplusplus
5570af302Sopenharmony_ciextern "C" {
6570af302Sopenharmony_ci#endif
7570af302Sopenharmony_ci
8570af302Sopenharmony_ci#include <features.h>
9570af302Sopenharmony_ci
10570af302Sopenharmony_ci#define __NEED_off_t
11570af302Sopenharmony_ci#define __NEED_pid_t
12570af302Sopenharmony_ci#define __NEED_mode_t
13570af302Sopenharmony_ci
14570af302Sopenharmony_ci#ifdef _GNU_SOURCE
15570af302Sopenharmony_ci#define __NEED_size_t
16570af302Sopenharmony_ci#define __NEED_ssize_t
17570af302Sopenharmony_ci#define __NEED_struct_iovec
18570af302Sopenharmony_ci#endif
19570af302Sopenharmony_ci
20570af302Sopenharmony_ci#include <bits/alltypes.h>
21570af302Sopenharmony_ci
22570af302Sopenharmony_ci#include <bits/fcntl.h>
23570af302Sopenharmony_ci#include <fortify/fcntl.h>
24570af302Sopenharmony_ci
25570af302Sopenharmony_cistruct flock {
26570af302Sopenharmony_ci	short l_type;
27570af302Sopenharmony_ci	short l_whence;
28570af302Sopenharmony_ci	off_t l_start;
29570af302Sopenharmony_ci	off_t l_len;
30570af302Sopenharmony_ci	pid_t l_pid;
31570af302Sopenharmony_ci};
32570af302Sopenharmony_ci
33570af302Sopenharmony_ciint creat(const char *, mode_t);
34570af302Sopenharmony_ciint fcntl(int, int, ...);
35570af302Sopenharmony_ciint open(const char *, int, ...);
36570af302Sopenharmony_ciint openat(int, const char *, int, ...);
37570af302Sopenharmony_ciint posix_fadvise(int, off_t, off_t, int);
38570af302Sopenharmony_ciint posix_fallocate(int, off_t, off_t);
39570af302Sopenharmony_ci
40570af302Sopenharmony_ci#define O_SEARCH   O_PATH
41570af302Sopenharmony_ci#define O_EXEC     O_PATH
42570af302Sopenharmony_ci#define O_TTY_INIT 0
43570af302Sopenharmony_ci
44570af302Sopenharmony_ci#define O_ACCMODE (03|O_SEARCH)
45570af302Sopenharmony_ci#define O_RDONLY  00
46570af302Sopenharmony_ci#define O_WRONLY  01
47570af302Sopenharmony_ci#define O_RDWR    02
48570af302Sopenharmony_ci
49570af302Sopenharmony_ci#define F_OFD_GETLK 36
50570af302Sopenharmony_ci#define F_OFD_SETLK 37
51570af302Sopenharmony_ci#define F_OFD_SETLKW 38
52570af302Sopenharmony_ci
53570af302Sopenharmony_ci#define F_DUPFD_CLOEXEC 1030
54570af302Sopenharmony_ci
55570af302Sopenharmony_ci#define F_RDLCK 0
56570af302Sopenharmony_ci#define F_WRLCK 1
57570af302Sopenharmony_ci#define F_UNLCK 2
58570af302Sopenharmony_ci
59570af302Sopenharmony_ci#define FD_CLOEXEC 1
60570af302Sopenharmony_ci
61570af302Sopenharmony_ci#define AT_FDCWD (-100)
62570af302Sopenharmony_ci#define AT_SYMLINK_NOFOLLOW 0x100
63570af302Sopenharmony_ci#define AT_REMOVEDIR 0x200
64570af302Sopenharmony_ci#define AT_SYMLINK_FOLLOW 0x400
65570af302Sopenharmony_ci#define AT_EACCESS 0x200
66570af302Sopenharmony_ci
67570af302Sopenharmony_ci#define POSIX_FADV_NORMAL     0
68570af302Sopenharmony_ci#define POSIX_FADV_RANDOM     1
69570af302Sopenharmony_ci#define POSIX_FADV_SEQUENTIAL 2
70570af302Sopenharmony_ci#define POSIX_FADV_WILLNEED   3
71570af302Sopenharmony_ci#ifndef POSIX_FADV_DONTNEED
72570af302Sopenharmony_ci#define POSIX_FADV_DONTNEED   4
73570af302Sopenharmony_ci#define POSIX_FADV_NOREUSE    5
74570af302Sopenharmony_ci#endif
75570af302Sopenharmony_ci
76570af302Sopenharmony_ci#undef SEEK_SET
77570af302Sopenharmony_ci#undef SEEK_CUR
78570af302Sopenharmony_ci#undef SEEK_END
79570af302Sopenharmony_ci#define SEEK_SET 0
80570af302Sopenharmony_ci#define SEEK_CUR 1
81570af302Sopenharmony_ci#define SEEK_END 2
82570af302Sopenharmony_ci
83570af302Sopenharmony_ci#ifndef S_IRUSR
84570af302Sopenharmony_ci#define S_ISUID 04000
85570af302Sopenharmony_ci#define S_ISGID 02000
86570af302Sopenharmony_ci#define S_ISVTX 01000
87570af302Sopenharmony_ci#define S_IRUSR 0400
88570af302Sopenharmony_ci#define S_IWUSR 0200
89570af302Sopenharmony_ci#define S_IXUSR 0100
90570af302Sopenharmony_ci#define S_IRWXU 0700
91570af302Sopenharmony_ci#define S_IRGRP 0040
92570af302Sopenharmony_ci#define S_IWGRP 0020
93570af302Sopenharmony_ci#define S_IXGRP 0010
94570af302Sopenharmony_ci#define S_IRWXG 0070
95570af302Sopenharmony_ci#define S_IROTH 0004
96570af302Sopenharmony_ci#define S_IWOTH 0002
97570af302Sopenharmony_ci#define S_IXOTH 0001
98570af302Sopenharmony_ci#define S_IRWXO 0007
99570af302Sopenharmony_ci#endif
100570af302Sopenharmony_ci
101570af302Sopenharmony_ci#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
102570af302Sopenharmony_ci#define AT_NO_AUTOMOUNT 0x800
103570af302Sopenharmony_ci#define AT_EMPTY_PATH 0x1000
104570af302Sopenharmony_ci#define AT_STATX_SYNC_TYPE 0x6000
105570af302Sopenharmony_ci#define AT_STATX_SYNC_AS_STAT 0x0000
106570af302Sopenharmony_ci#define AT_STATX_FORCE_SYNC 0x2000
107570af302Sopenharmony_ci#define AT_STATX_DONT_SYNC 0x4000
108570af302Sopenharmony_ci#define AT_RECURSIVE 0x8000
109570af302Sopenharmony_ci
110570af302Sopenharmony_ci#define FAPPEND O_APPEND
111570af302Sopenharmony_ci#define FFSYNC O_SYNC
112570af302Sopenharmony_ci#define FASYNC O_ASYNC
113570af302Sopenharmony_ci#define FNONBLOCK O_NONBLOCK
114570af302Sopenharmony_ci#define FNDELAY O_NDELAY
115570af302Sopenharmony_ci
116570af302Sopenharmony_ci#define F_OK 0
117570af302Sopenharmony_ci#define R_OK 4
118570af302Sopenharmony_ci#define W_OK 2
119570af302Sopenharmony_ci#define X_OK 1
120570af302Sopenharmony_ci#define F_ULOCK 0
121570af302Sopenharmony_ci#define F_LOCK  1
122570af302Sopenharmony_ci#define F_TLOCK 2
123570af302Sopenharmony_ci#define F_TEST  3
124570af302Sopenharmony_ci
125570af302Sopenharmony_ci#define F_SETLEASE	1024
126570af302Sopenharmony_ci#define F_GETLEASE	1025
127570af302Sopenharmony_ci#define F_NOTIFY	1026
128570af302Sopenharmony_ci#define F_CANCELLK	1029
129570af302Sopenharmony_ci#define F_SETPIPE_SZ	1031
130570af302Sopenharmony_ci#define F_GETPIPE_SZ	1032
131570af302Sopenharmony_ci#define F_ADD_SEALS	1033
132570af302Sopenharmony_ci#define F_GET_SEALS	1034
133570af302Sopenharmony_ci
134570af302Sopenharmony_ci#define F_SEAL_SEAL	0x0001
135570af302Sopenharmony_ci#define F_SEAL_SHRINK	0x0002
136570af302Sopenharmony_ci#define F_SEAL_GROW	0x0004
137570af302Sopenharmony_ci#define F_SEAL_WRITE	0x0008
138570af302Sopenharmony_ci#define F_SEAL_FUTURE_WRITE	0x0010
139570af302Sopenharmony_ci
140570af302Sopenharmony_ci#define F_GET_RW_HINT		1035
141570af302Sopenharmony_ci#define F_SET_RW_HINT		1036
142570af302Sopenharmony_ci#define F_GET_FILE_RW_HINT	1037
143570af302Sopenharmony_ci#define F_SET_FILE_RW_HINT	1038
144570af302Sopenharmony_ci
145570af302Sopenharmony_ci#define RWF_WRITE_LIFE_NOT_SET	0
146570af302Sopenharmony_ci#define RWH_WRITE_LIFE_NONE	1
147570af302Sopenharmony_ci#define RWH_WRITE_LIFE_SHORT	2
148570af302Sopenharmony_ci#define RWH_WRITE_LIFE_MEDIUM	3
149570af302Sopenharmony_ci#define RWH_WRITE_LIFE_LONG	4
150570af302Sopenharmony_ci#define RWH_WRITE_LIFE_EXTREME	5
151570af302Sopenharmony_ci
152570af302Sopenharmony_ci#define DN_ACCESS	0x00000001
153570af302Sopenharmony_ci#define DN_MODIFY	0x00000002
154570af302Sopenharmony_ci#define DN_CREATE	0x00000004
155570af302Sopenharmony_ci#define DN_DELETE	0x00000008
156570af302Sopenharmony_ci#define DN_RENAME	0x00000010
157570af302Sopenharmony_ci#define DN_ATTRIB	0x00000020
158570af302Sopenharmony_ci#define DN_MULTISHOT	0x80000000
159570af302Sopenharmony_ci
160570af302Sopenharmony_ciint lockf(int, int, off_t);
161570af302Sopenharmony_ci#endif
162570af302Sopenharmony_ci
163570af302Sopenharmony_ci#if defined(_GNU_SOURCE)
164570af302Sopenharmony_ci#define F_OWNER_TID 0
165570af302Sopenharmony_ci#define F_OWNER_PID 1
166570af302Sopenharmony_ci#define F_OWNER_PGRP 2
167570af302Sopenharmony_ci#define F_OWNER_GID 2
168570af302Sopenharmony_cistruct file_handle {
169570af302Sopenharmony_ci	unsigned handle_bytes;
170570af302Sopenharmony_ci	int handle_type;
171570af302Sopenharmony_ci	unsigned char f_handle[];
172570af302Sopenharmony_ci};
173570af302Sopenharmony_cistruct f_owner_ex {
174570af302Sopenharmony_ci	int type;
175570af302Sopenharmony_ci	pid_t pid;
176570af302Sopenharmony_ci};
177570af302Sopenharmony_ci#define FALLOC_FL_KEEP_SIZE 1
178570af302Sopenharmony_ci#define FALLOC_FL_PUNCH_HOLE 2
179570af302Sopenharmony_ci#define MAX_HANDLE_SZ 128
180570af302Sopenharmony_ci#define SYNC_FILE_RANGE_WAIT_BEFORE 1
181570af302Sopenharmony_ci#define SYNC_FILE_RANGE_WRITE 2
182570af302Sopenharmony_ci#define SYNC_FILE_RANGE_WAIT_AFTER 4
183570af302Sopenharmony_ci#define SPLICE_F_MOVE 1
184570af302Sopenharmony_ci#define SPLICE_F_NONBLOCK 2
185570af302Sopenharmony_ci#define SPLICE_F_MORE 4
186570af302Sopenharmony_ci#define SPLICE_F_GIFT 8
187570af302Sopenharmony_ciint fallocate(int, int, off_t, off_t);
188570af302Sopenharmony_ci#define fallocate64 fallocate
189570af302Sopenharmony_ciint name_to_handle_at(int, const char *, struct file_handle *, int *, int);
190570af302Sopenharmony_ciint open_by_handle_at(int, struct file_handle *, int);
191570af302Sopenharmony_cissize_t readahead(int, off_t, size_t);
192570af302Sopenharmony_ciint sync_file_range(int, off_t, off_t, unsigned);
193570af302Sopenharmony_cissize_t vmsplice(int, const struct iovec *, size_t, unsigned);
194570af302Sopenharmony_cissize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
195570af302Sopenharmony_cissize_t tee(int, int, size_t, unsigned);
196570af302Sopenharmony_ci#define loff_t off_t
197570af302Sopenharmony_ci#endif
198570af302Sopenharmony_ci
199570af302Sopenharmony_ci#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
200570af302Sopenharmony_ci#define F_GETLK64 F_GETLK
201570af302Sopenharmony_ci#define F_SETLK64 F_SETLK
202570af302Sopenharmony_ci#define F_SETLKW64 F_SETLKW
203570af302Sopenharmony_ci#define flock64 flock
204570af302Sopenharmony_ci#define open64 open
205570af302Sopenharmony_ci#define openat64 openat
206570af302Sopenharmony_ci#define creat64 creat
207570af302Sopenharmony_ci#define lockf64 lockf
208570af302Sopenharmony_ci#define posix_fadvise64 posix_fadvise
209570af302Sopenharmony_ci#define posix_fallocate64 posix_fallocate
210570af302Sopenharmony_ci#define off64_t off_t
211570af302Sopenharmony_ci#endif
212570af302Sopenharmony_ci
213570af302Sopenharmony_ci#ifdef __cplusplus
214570af302Sopenharmony_ci}
215570af302Sopenharmony_ci#endif
216570af302Sopenharmony_ci
217570af302Sopenharmony_ci#endif
218