fcntl.h raw

   1  #ifndef	_FCNTL_H
   2  #define	_FCNTL_H
   3  
   4  #ifdef __cplusplus
   5  extern "C" {
   6  #endif
   7  
   8  #include <features.h>
   9  
  10  #define __NEED_off_t
  11  #define __NEED_pid_t
  12  #define __NEED_mode_t
  13  
  14  #ifdef _GNU_SOURCE
  15  #define __NEED_size_t
  16  #define __NEED_ssize_t
  17  #define __NEED_struct_iovec
  18  #endif
  19  
  20  #include <bits/alltypes.h>
  21  
  22  #include <bits/fcntl.h>
  23  
  24  struct flock {
  25  	short l_type;
  26  	short l_whence;
  27  	off_t l_start;
  28  	off_t l_len;
  29  	pid_t l_pid;
  30  };
  31  
  32  int creat(const char *, mode_t);
  33  int fcntl(int, int, ...);
  34  int open(const char *, int, ...);
  35  int openat(int, const char *, int, ...);
  36  int posix_fadvise(int, off_t, off_t, int);
  37  int posix_fallocate(int, off_t, off_t);
  38  
  39  #define O_SEARCH   O_PATH
  40  #define O_EXEC     O_PATH
  41  #define O_TTY_INIT 0
  42  
  43  #define O_ACCMODE (03|O_SEARCH)
  44  #define O_RDONLY  00
  45  #define O_WRONLY  01
  46  #define O_RDWR    02
  47  
  48  #define F_OFD_GETLK 36
  49  #define F_OFD_SETLK 37
  50  #define F_OFD_SETLKW 38
  51  
  52  #define F_DUPFD_CLOEXEC 1030
  53  
  54  #define F_RDLCK 0
  55  #define F_WRLCK 1
  56  #define F_UNLCK 2
  57  
  58  #define FD_CLOEXEC 1
  59  
  60  #define AT_FDCWD (-100)
  61  #define AT_SYMLINK_NOFOLLOW 0x100
  62  #define AT_REMOVEDIR 0x200
  63  #define AT_SYMLINK_FOLLOW 0x400
  64  #define AT_EACCESS 0x200
  65  
  66  #define POSIX_FADV_NORMAL     0
  67  #define POSIX_FADV_RANDOM     1
  68  #define POSIX_FADV_SEQUENTIAL 2
  69  #define POSIX_FADV_WILLNEED   3
  70  #ifndef POSIX_FADV_DONTNEED
  71  #define POSIX_FADV_DONTNEED   4
  72  #define POSIX_FADV_NOREUSE    5
  73  #endif
  74  
  75  #undef SEEK_SET
  76  #undef SEEK_CUR
  77  #undef SEEK_END
  78  #define SEEK_SET 0
  79  #define SEEK_CUR 1
  80  #define SEEK_END 2
  81  
  82  #ifndef S_IRUSR
  83  #define S_ISUID 04000
  84  #define S_ISGID 02000
  85  #define S_ISVTX 01000
  86  #define S_IRUSR 0400
  87  #define S_IWUSR 0200
  88  #define S_IXUSR 0100
  89  #define S_IRWXU 0700
  90  #define S_IRGRP 0040
  91  #define S_IWGRP 0020
  92  #define S_IXGRP 0010
  93  #define S_IRWXG 0070
  94  #define S_IROTH 0004
  95  #define S_IWOTH 0002
  96  #define S_IXOTH 0001
  97  #define S_IRWXO 0007
  98  #endif
  99  
 100  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 101  #define AT_NO_AUTOMOUNT 0x800
 102  #define AT_EMPTY_PATH 0x1000
 103  #define AT_STATX_SYNC_TYPE 0x6000
 104  #define AT_STATX_SYNC_AS_STAT 0x0000
 105  #define AT_STATX_FORCE_SYNC 0x2000
 106  #define AT_STATX_DONT_SYNC 0x4000
 107  #define AT_RECURSIVE 0x8000
 108  
 109  #define FAPPEND O_APPEND
 110  #define FFSYNC O_SYNC
 111  #define FASYNC O_ASYNC
 112  #define FNONBLOCK O_NONBLOCK
 113  #define FNDELAY O_NDELAY
 114  
 115  #define F_OK 0
 116  #define R_OK 4
 117  #define W_OK 2
 118  #define X_OK 1
 119  #define F_ULOCK 0
 120  #define F_LOCK  1
 121  #define F_TLOCK 2
 122  #define F_TEST  3
 123  
 124  #define F_SETLEASE	1024
 125  #define F_GETLEASE	1025
 126  #define F_NOTIFY	1026
 127  #define F_CANCELLK	1029
 128  #define F_SETPIPE_SZ	1031
 129  #define F_GETPIPE_SZ	1032
 130  #define F_ADD_SEALS	1033
 131  #define F_GET_SEALS	1034
 132  
 133  #define F_SEAL_SEAL	0x0001
 134  #define F_SEAL_SHRINK	0x0002
 135  #define F_SEAL_GROW	0x0004
 136  #define F_SEAL_WRITE	0x0008
 137  #define F_SEAL_FUTURE_WRITE	0x0010
 138  
 139  #define F_GET_RW_HINT		1035
 140  #define F_SET_RW_HINT		1036
 141  #define F_GET_FILE_RW_HINT	1037
 142  #define F_SET_FILE_RW_HINT	1038
 143  
 144  #define RWF_WRITE_LIFE_NOT_SET	0
 145  #define RWH_WRITE_LIFE_NONE	1
 146  #define RWH_WRITE_LIFE_SHORT	2
 147  #define RWH_WRITE_LIFE_MEDIUM	3
 148  #define RWH_WRITE_LIFE_LONG	4
 149  #define RWH_WRITE_LIFE_EXTREME	5
 150  
 151  #define DN_ACCESS	0x00000001
 152  #define DN_MODIFY	0x00000002
 153  #define DN_CREATE	0x00000004
 154  #define DN_DELETE	0x00000008
 155  #define DN_RENAME	0x00000010
 156  #define DN_ATTRIB	0x00000020
 157  #define DN_MULTISHOT	0x80000000
 158  
 159  int lockf(int, int, off_t);
 160  #endif
 161  
 162  #if defined(_GNU_SOURCE)
 163  #define F_OWNER_TID 0
 164  #define F_OWNER_PID 1
 165  #define F_OWNER_PGRP 2
 166  #define F_OWNER_GID 2
 167  struct file_handle {
 168  	unsigned handle_bytes;
 169  	int handle_type;
 170  	unsigned char f_handle[];
 171  };
 172  struct f_owner_ex {
 173  	int type;
 174  	pid_t pid;
 175  };
 176  #define FALLOC_FL_KEEP_SIZE 1
 177  #define FALLOC_FL_PUNCH_HOLE 2
 178  #define MAX_HANDLE_SZ 128
 179  #define SYNC_FILE_RANGE_WAIT_BEFORE 1
 180  #define SYNC_FILE_RANGE_WRITE 2
 181  #define SYNC_FILE_RANGE_WAIT_AFTER 4
 182  #define SPLICE_F_MOVE 1
 183  #define SPLICE_F_NONBLOCK 2
 184  #define SPLICE_F_MORE 4
 185  #define SPLICE_F_GIFT 8
 186  int fallocate(int, int, off_t, off_t);
 187  #define fallocate64 fallocate
 188  int name_to_handle_at(int, const char *, struct file_handle *, int *, int);
 189  int open_by_handle_at(int, struct file_handle *, int);
 190  ssize_t readahead(int, off_t, size_t);
 191  int sync_file_range(int, off_t, off_t, unsigned);
 192  ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
 193  ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
 194  ssize_t tee(int, int, size_t, unsigned);
 195  #define loff_t off_t
 196  #endif
 197  
 198  #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 199  #define F_GETLK64 F_GETLK
 200  #define F_SETLK64 F_SETLK
 201  #define F_SETLKW64 F_SETLKW
 202  #define flock64 flock
 203  #define open64 open
 204  #define openat64 openat
 205  #define creat64 creat
 206  #define lockf64 lockf
 207  #define posix_fadvise64 posix_fadvise
 208  #define posix_fallocate64 posix_fallocate
 209  #define off64_t off_t
 210  #endif
 211  
 212  #ifdef __cplusplus
 213  }
 214  #endif
 215  
 216  #endif
 217