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