17777dab0Sopenharmony_ci#ifndef	_FCNTL_H
27777dab0Sopenharmony_ci#define	_FCNTL_H
37777dab0Sopenharmony_ci
47777dab0Sopenharmony_ci#ifdef __cplusplus
57777dab0Sopenharmony_ciextern "C" {
67777dab0Sopenharmony_ci#endif
77777dab0Sopenharmony_ci
87777dab0Sopenharmony_ci#include <features.h>
97777dab0Sopenharmony_ci
107777dab0Sopenharmony_ci#define __NEED_off_t
117777dab0Sopenharmony_ci#define __NEED_pid_t
127777dab0Sopenharmony_ci#define __NEED_mode_t
137777dab0Sopenharmony_ci
147777dab0Sopenharmony_ci#ifdef _GNU_SOURCE
157777dab0Sopenharmony_ci#define __NEED_size_t
167777dab0Sopenharmony_ci#define __NEED_ssize_t
177777dab0Sopenharmony_ci#define __NEED_struct_iovec
187777dab0Sopenharmony_ci#endif
197777dab0Sopenharmony_ci
207777dab0Sopenharmony_ci#include <bits/alltypes.h>
217777dab0Sopenharmony_ci
227777dab0Sopenharmony_ci#include <bits/fcntl.h>
237777dab0Sopenharmony_ci#include <fortify/fcntl.h>
247777dab0Sopenharmony_ci
257777dab0Sopenharmony_cistruct flock {
267777dab0Sopenharmony_ci	short l_type;
277777dab0Sopenharmony_ci	short l_whence;
287777dab0Sopenharmony_ci	off_t l_start;
297777dab0Sopenharmony_ci	off_t l_len;
307777dab0Sopenharmony_ci	pid_t l_pid;
317777dab0Sopenharmony_ci};
327777dab0Sopenharmony_ci
337777dab0Sopenharmony_ciint creat(const char *, mode_t);
347777dab0Sopenharmony_ciint fcntl(int, int, ...);
357777dab0Sopenharmony_ciint open(const char *, int, ...);
367777dab0Sopenharmony_ciint openat(int, const char *, int, ...);
377777dab0Sopenharmony_ciint posix_fadvise(int, off_t, off_t, int);
387777dab0Sopenharmony_ciint posix_fallocate(int, off_t, off_t);
397777dab0Sopenharmony_ci
407777dab0Sopenharmony_ci#define O_SEARCH   O_PATH
417777dab0Sopenharmony_ci#define O_EXEC     O_PATH
427777dab0Sopenharmony_ci#define O_TTY_INIT 0
437777dab0Sopenharmony_ci
447777dab0Sopenharmony_ci#define O_ACCMODE (03|O_SEARCH)
457777dab0Sopenharmony_ci#define O_RDONLY  00
467777dab0Sopenharmony_ci#define O_WRONLY  01
477777dab0Sopenharmony_ci#define O_RDWR    02
487777dab0Sopenharmony_ci
497777dab0Sopenharmony_ci#define F_OFD_GETLK 36
507777dab0Sopenharmony_ci#define F_OFD_SETLK 37
517777dab0Sopenharmony_ci#define F_OFD_SETLKW 38
527777dab0Sopenharmony_ci
537777dab0Sopenharmony_ci#define F_DUPFD_CLOEXEC 1030
547777dab0Sopenharmony_ci
557777dab0Sopenharmony_ci#define F_RDLCK 0
567777dab0Sopenharmony_ci#define F_WRLCK 1
577777dab0Sopenharmony_ci#define F_UNLCK 2
587777dab0Sopenharmony_ci
597777dab0Sopenharmony_ci#define FD_CLOEXEC 1
607777dab0Sopenharmony_ci
617777dab0Sopenharmony_ci#define AT_FDCWD (-100)
627777dab0Sopenharmony_ci#define AT_SYMLINK_NOFOLLOW 0x100
637777dab0Sopenharmony_ci#define AT_REMOVEDIR 0x200
647777dab0Sopenharmony_ci#define AT_SYMLINK_FOLLOW 0x400
657777dab0Sopenharmony_ci#define AT_EACCESS 0x200
667777dab0Sopenharmony_ci
677777dab0Sopenharmony_ci#define POSIX_FADV_NORMAL     0
687777dab0Sopenharmony_ci#define POSIX_FADV_RANDOM     1
697777dab0Sopenharmony_ci#define POSIX_FADV_SEQUENTIAL 2
707777dab0Sopenharmony_ci#define POSIX_FADV_WILLNEED   3
717777dab0Sopenharmony_ci#ifndef POSIX_FADV_DONTNEED
727777dab0Sopenharmony_ci#define POSIX_FADV_DONTNEED   4
737777dab0Sopenharmony_ci#define POSIX_FADV_NOREUSE    5
747777dab0Sopenharmony_ci#endif
757777dab0Sopenharmony_ci
767777dab0Sopenharmony_ci#undef SEEK_SET
777777dab0Sopenharmony_ci#undef SEEK_CUR
787777dab0Sopenharmony_ci#undef SEEK_END
797777dab0Sopenharmony_ci#define SEEK_SET 0
807777dab0Sopenharmony_ci#define SEEK_CUR 1
817777dab0Sopenharmony_ci#define SEEK_END 2
827777dab0Sopenharmony_ci
837777dab0Sopenharmony_ci#ifndef S_IRUSR
847777dab0Sopenharmony_ci#define S_ISUID 04000
857777dab0Sopenharmony_ci#define S_ISGID 02000
867777dab0Sopenharmony_ci#define S_ISVTX 01000
877777dab0Sopenharmony_ci#define S_IRUSR 0400
887777dab0Sopenharmony_ci#define S_IWUSR 0200
897777dab0Sopenharmony_ci#define S_IXUSR 0100
907777dab0Sopenharmony_ci#define S_IRWXU 0700
917777dab0Sopenharmony_ci#define S_IRGRP 0040
927777dab0Sopenharmony_ci#define S_IWGRP 0020
937777dab0Sopenharmony_ci#define S_IXGRP 0010
947777dab0Sopenharmony_ci#define S_IRWXG 0070
957777dab0Sopenharmony_ci#define S_IROTH 0004
967777dab0Sopenharmony_ci#define S_IWOTH 0002
977777dab0Sopenharmony_ci#define S_IXOTH 0001
987777dab0Sopenharmony_ci#define S_IRWXO 0007
997777dab0Sopenharmony_ci#endif
1007777dab0Sopenharmony_ci
1017777dab0Sopenharmony_ci#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
1027777dab0Sopenharmony_ci#define AT_NO_AUTOMOUNT 0x800
1037777dab0Sopenharmony_ci#define AT_EMPTY_PATH 0x1000
1047777dab0Sopenharmony_ci#define AT_STATX_SYNC_TYPE 0x6000
1057777dab0Sopenharmony_ci#define AT_STATX_SYNC_AS_STAT 0x0000
1067777dab0Sopenharmony_ci#define AT_STATX_FORCE_SYNC 0x2000
1077777dab0Sopenharmony_ci#define AT_STATX_DONT_SYNC 0x4000
1087777dab0Sopenharmony_ci#define AT_RECURSIVE 0x8000
1097777dab0Sopenharmony_ci
1107777dab0Sopenharmony_ci#define FAPPEND O_APPEND
1117777dab0Sopenharmony_ci#define FFSYNC O_SYNC
1127777dab0Sopenharmony_ci#define FASYNC O_ASYNC
1137777dab0Sopenharmony_ci#define FNONBLOCK O_NONBLOCK
1147777dab0Sopenharmony_ci#define FNDELAY O_NDELAY
1157777dab0Sopenharmony_ci
1167777dab0Sopenharmony_ci#define F_OK 0
1177777dab0Sopenharmony_ci#define R_OK 4
1187777dab0Sopenharmony_ci#define W_OK 2
1197777dab0Sopenharmony_ci#define X_OK 1
1207777dab0Sopenharmony_ci#define F_ULOCK 0
1217777dab0Sopenharmony_ci#define F_LOCK  1
1227777dab0Sopenharmony_ci#define F_TLOCK 2
1237777dab0Sopenharmony_ci#define F_TEST  3
1247777dab0Sopenharmony_ci
1257777dab0Sopenharmony_ci#define F_SETLEASE	1024
1267777dab0Sopenharmony_ci#define F_GETLEASE	1025
1277777dab0Sopenharmony_ci#define F_NOTIFY	1026
1287777dab0Sopenharmony_ci#define F_CANCELLK	1029
1297777dab0Sopenharmony_ci#define F_SETPIPE_SZ	1031
1307777dab0Sopenharmony_ci#define F_GETPIPE_SZ	1032
1317777dab0Sopenharmony_ci#define F_ADD_SEALS	1033
1327777dab0Sopenharmony_ci#define F_GET_SEALS	1034
1337777dab0Sopenharmony_ci
1347777dab0Sopenharmony_ci#define F_SEAL_SEAL	0x0001
1357777dab0Sopenharmony_ci#define F_SEAL_SHRINK	0x0002
1367777dab0Sopenharmony_ci#define F_SEAL_GROW	0x0004
1377777dab0Sopenharmony_ci#define F_SEAL_WRITE	0x0008
1387777dab0Sopenharmony_ci#define F_SEAL_FUTURE_WRITE	0x0010
1397777dab0Sopenharmony_ci
1407777dab0Sopenharmony_ci#define F_GET_RW_HINT		1035
1417777dab0Sopenharmony_ci#define F_SET_RW_HINT		1036
1427777dab0Sopenharmony_ci#define F_GET_FILE_RW_HINT	1037
1437777dab0Sopenharmony_ci#define F_SET_FILE_RW_HINT	1038
1447777dab0Sopenharmony_ci
1457777dab0Sopenharmony_ci#define RWF_WRITE_LIFE_NOT_SET	0
1467777dab0Sopenharmony_ci#define RWH_WRITE_LIFE_NONE	1
1477777dab0Sopenharmony_ci#define RWH_WRITE_LIFE_SHORT	2
1487777dab0Sopenharmony_ci#define RWH_WRITE_LIFE_MEDIUM	3
1497777dab0Sopenharmony_ci#define RWH_WRITE_LIFE_LONG	4
1507777dab0Sopenharmony_ci#define RWH_WRITE_LIFE_EXTREME	5
1517777dab0Sopenharmony_ci
1527777dab0Sopenharmony_ci#define DN_ACCESS	0x00000001
1537777dab0Sopenharmony_ci#define DN_MODIFY	0x00000002
1547777dab0Sopenharmony_ci#define DN_CREATE	0x00000004
1557777dab0Sopenharmony_ci#define DN_DELETE	0x00000008
1567777dab0Sopenharmony_ci#define DN_RENAME	0x00000010
1577777dab0Sopenharmony_ci#define DN_ATTRIB	0x00000020
1587777dab0Sopenharmony_ci#define DN_MULTISHOT	0x80000000
1597777dab0Sopenharmony_ci
1607777dab0Sopenharmony_ciint lockf(int, int, off_t);
1617777dab0Sopenharmony_ci#endif
1627777dab0Sopenharmony_ci
1637777dab0Sopenharmony_ci#if defined(_GNU_SOURCE)
1647777dab0Sopenharmony_ci#define F_OWNER_TID 0
1657777dab0Sopenharmony_ci#define F_OWNER_PID 1
1667777dab0Sopenharmony_ci#define F_OWNER_PGRP 2
1677777dab0Sopenharmony_ci#define F_OWNER_GID 2
1687777dab0Sopenharmony_cistruct file_handle {
1697777dab0Sopenharmony_ci	unsigned handle_bytes;
1707777dab0Sopenharmony_ci	int handle_type;
1717777dab0Sopenharmony_ci	unsigned char f_handle[];
1727777dab0Sopenharmony_ci};
1737777dab0Sopenharmony_cistruct f_owner_ex {
1747777dab0Sopenharmony_ci	int type;
1757777dab0Sopenharmony_ci	pid_t pid;
1767777dab0Sopenharmony_ci};
1777777dab0Sopenharmony_ci#define FALLOC_FL_KEEP_SIZE 1
1787777dab0Sopenharmony_ci#define FALLOC_FL_PUNCH_HOLE 2
1797777dab0Sopenharmony_ci#define MAX_HANDLE_SZ 128
1807777dab0Sopenharmony_ci#define SYNC_FILE_RANGE_WAIT_BEFORE 1
1817777dab0Sopenharmony_ci#define SYNC_FILE_RANGE_WRITE 2
1827777dab0Sopenharmony_ci#define SYNC_FILE_RANGE_WAIT_AFTER 4
1837777dab0Sopenharmony_ci#define SPLICE_F_MOVE 1
1847777dab0Sopenharmony_ci#define SPLICE_F_NONBLOCK 2
1857777dab0Sopenharmony_ci#define SPLICE_F_MORE 4
1867777dab0Sopenharmony_ci#define SPLICE_F_GIFT 8
1877777dab0Sopenharmony_ciint fallocate(int, int, off_t, off_t);
1887777dab0Sopenharmony_ci#define fallocate64 fallocate
1897777dab0Sopenharmony_ciint name_to_handle_at(int, const char *, struct file_handle *, int *, int);
1907777dab0Sopenharmony_ciint open_by_handle_at(int, struct file_handle *, int);
1917777dab0Sopenharmony_cissize_t readahead(int, off_t, size_t);
1927777dab0Sopenharmony_ciint sync_file_range(int, off_t, off_t, unsigned);
1937777dab0Sopenharmony_cissize_t vmsplice(int, const struct iovec *, size_t, unsigned);
1947777dab0Sopenharmony_cissize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
1957777dab0Sopenharmony_cissize_t tee(int, int, size_t, unsigned);
1967777dab0Sopenharmony_ci#define loff_t off_t
1977777dab0Sopenharmony_ci#endif
1987777dab0Sopenharmony_ci
1997777dab0Sopenharmony_ci#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
2007777dab0Sopenharmony_ci#define F_GETLK64 F_GETLK
2017777dab0Sopenharmony_ci#define F_SETLK64 F_SETLK
2027777dab0Sopenharmony_ci#define F_SETLKW64 F_SETLKW
2037777dab0Sopenharmony_ci#define flock64 flock
2047777dab0Sopenharmony_ci#define open64 open
2057777dab0Sopenharmony_ci#define openat64 openat
2067777dab0Sopenharmony_ci#define creat64 creat
2077777dab0Sopenharmony_ci#define lockf64 lockf
2087777dab0Sopenharmony_ci#define posix_fadvise64 posix_fadvise
2097777dab0Sopenharmony_ci#define posix_fallocate64 posix_fallocate
2107777dab0Sopenharmony_ci#define off64_t off_t
2117777dab0Sopenharmony_ci#endif
2127777dab0Sopenharmony_ci
2137777dab0Sopenharmony_ci#ifdef __cplusplus
2147777dab0Sopenharmony_ci}
2157777dab0Sopenharmony_ci#endif
2167777dab0Sopenharmony_ci
2177777dab0Sopenharmony_ci#endif
218