modernc.org/cc@v1.0.1/v2/headers/linux_arm/usr/include/fcntl.h (about) 1 /* Copyright (C) 1991-2016 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, see 16 <http://www.gnu.org/licenses/>. */ 17 18 /* 19 * POSIX Standard: 6.5 File Control Operations <fcntl.h> 20 */ 21 22 #ifndef _FCNTL_H 23 #define _FCNTL_H 1 24 25 #include <features.h> 26 27 /* This must be early so <bits/fcntl.h> can define types winningly. */ 28 __BEGIN_DECLS 29 /* Get __mode_t, __dev_t and __off_t .*/ 30 #include <bits/types.h> 31 /* Get the definitions of O_*, F_*, FD_*: all the 32 numbers and flag bits for `open', `fcntl', et al. */ 33 #include <bits/fcntl.h> 34 /* Detect if open needs mode as a third argument (or for openat as a fourth 35 argument). */ 36 #ifdef __O_TMPFILE 37 #define __OPEN_NEEDS_MODE(oflag) \ 38 (((oflag) & O_CREAT) != 0 || ((oflag) & __O_TMPFILE) == __O_TMPFILE) 39 #else 40 #define __OPEN_NEEDS_MODE(oflag) (((oflag) & O_CREAT) != 0) 41 #endif 42 /* POSIX.1-2001 specifies that these types are defined by <fcntl.h>. 43 Earlier POSIX standards permitted any type ending in `_t' to be defined 44 by any POSIX header, so we don't conditionalize the definitions here. */ 45 #ifndef __mode_t_defined 46 typedef __mode_t mode_t; 47 #define __mode_t_defined 48 #endif 49 50 #ifndef __off_t_defined 51 #ifndef __USE_FILE_OFFSET64 52 typedef __off_t off_t; 53 #else 54 typedef __off64_t off_t; 55 #endif 56 #define __off_t_defined 57 #endif 58 59 #if defined __USE_LARGEFILE64 && !defined __off64_t_defined 60 typedef __off64_t off64_t; 61 #define __off64_t_defined 62 #endif 63 64 #ifndef __pid_t_defined 65 typedef __pid_t pid_t; 66 #define __pid_t_defined 67 #endif 68 69 /* For XPG all symbols from <sys/stat.h> should also be available. */ 70 #ifdef __USE_XOPEN2K8 71 #define __need_timespec 72 #include <time.h> 73 #endif 74 #if defined __USE_XOPEN || defined __USE_XOPEN2K8 75 #include <bits/stat.h> 76 77 #define S_IFMT __S_IFMT 78 #define S_IFDIR __S_IFDIR 79 #define S_IFCHR __S_IFCHR 80 #define S_IFBLK __S_IFBLK 81 #define S_IFREG __S_IFREG 82 #ifdef __S_IFIFO 83 #define S_IFIFO __S_IFIFO 84 #endif 85 #ifdef __S_IFLNK 86 #define S_IFLNK __S_IFLNK 87 #endif 88 #if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) && defined __S_IFSOCK 89 #define S_IFSOCK __S_IFSOCK 90 #endif 91 92 /* Protection bits. */ 93 94 #define S_ISUID __S_ISUID /* Set user ID on execution. */ 95 #define S_ISGID __S_ISGID /* Set group ID on execution. */ 96 97 #if defined __USE_MISC || defined __USE_XOPEN 98 /* Save swapped text after use (sticky bit). This is pretty well obsolete. */ 99 #define S_ISVTX __S_ISVTX 100 #endif 101 102 #define S_IRUSR __S_IREAD /* Read by owner. */ 103 #define S_IWUSR __S_IWRITE /* Write by owner. */ 104 #define S_IXUSR __S_IEXEC /* Execute by owner. */ 105 /* Read, write, and execute by owner. */ 106 #define S_IRWXU (__S_IREAD|__S_IWRITE|__S_IEXEC) 107 108 #define S_IRGRP (S_IRUSR >> 3) /* Read by group. */ 109 #define S_IWGRP (S_IWUSR >> 3) /* Write by group. */ 110 #define S_IXGRP (S_IXUSR >> 3) /* Execute by group. */ 111 /* Read, write, and execute by group. */ 112 #define S_IRWXG (S_IRWXU >> 3) 113 114 #define S_IROTH (S_IRGRP >> 3) /* Read by others. */ 115 #define S_IWOTH (S_IWGRP >> 3) /* Write by others. */ 116 #define S_IXOTH (S_IXGRP >> 3) /* Execute by others. */ 117 /* Read, write, and execute by others. */ 118 #define S_IRWXO (S_IRWXG >> 3) 119 #endif 120 121 #ifdef __USE_MISC 122 #ifndef R_OK /* Verbatim from <unistd.h>. Ugh. */ 123 /* Values for the second argument to access. 124 These may be OR'd together. */ 125 #define R_OK 4 /* Test for read permission. */ 126 #define W_OK 2 /* Test for write permission. */ 127 #define X_OK 1 /* Test for execute permission. */ 128 #define F_OK 0 /* Test for existence. */ 129 #endif 130 #endif /* Use misc. */ 131 132 /* XPG wants the following symbols. <stdio.h> has the same definitions. */ 133 #if defined __USE_XOPEN || defined __USE_XOPEN2K8 134 #define SEEK_SET 0 /* Seek from beginning of file. */ 135 #define SEEK_CUR 1 /* Seek from current position. */ 136 #define SEEK_END 2 /* Seek from end of file. */ 137 #endif /* XPG */ 138 139 /* Do the file control operation described by CMD on FD. 140 The remaining arguments are interpreted depending on CMD. 141 142 This function is a cancellation point and therefore not marked with 143 __THROW. */ 144 extern int fcntl(int __fd, int __cmd, ...); 145 146 /* Open FILE and return a new file descriptor for it, or -1 on error. 147 OFLAG determines the type of access used. If O_CREAT or O_TMPFILE is set 148 in OFLAG, the third argument is taken as a `mode_t', the mode of the 149 created file. 150 151 This function is a cancellation point and therefore not marked with 152 __THROW. */ 153 #ifndef __USE_FILE_OFFSET64 154 extern int open(const char *__file, int __oflag, ...) __nonnull((1)); 155 #else 156 #ifdef __REDIRECT 157 extern int __REDIRECT(open, (const char *__file, int __oflag, ...), open64) __nonnull((1)); 158 #else 159 #define open open64 160 #endif 161 #endif 162 #ifdef __USE_LARGEFILE64 163 extern int open64(const char *__file, int __oflag, ...) __nonnull((1)); 164 #endif 165 166 #ifdef __USE_ATFILE 167 /* Similar to `open' but a relative path name is interpreted relative to 168 the directory for which FD is a descriptor. 169 170 NOTE: some other `openat' implementation support additional functionality 171 through this interface, especially using the O_XATTR flag. This is not 172 yet supported here. 173 174 This function is a cancellation point and therefore not marked with 175 __THROW. */ 176 #ifndef __USE_FILE_OFFSET64 177 extern int openat(int __fd, const char *__file, int __oflag, ...) __nonnull((2)); 178 #else 179 #ifdef __REDIRECT 180 extern int __REDIRECT(openat, (int __fd, const char *__file, int __oflag, ...), openat64) __nonnull((2)); 181 #else 182 #define openat openat64 183 #endif 184 #endif 185 #ifdef __USE_LARGEFILE64 186 extern int openat64(int __fd, const char *__file, int __oflag, ...) __nonnull((2)); 187 #endif 188 #endif 189 190 /* Create and open FILE, with mode MODE. This takes an `int' MODE 191 argument because that is what `mode_t' will be widened to. 192 193 This function is a cancellation point and therefore not marked with 194 __THROW. */ 195 #ifndef __USE_FILE_OFFSET64 196 extern int creat(const char *__file, mode_t __mode) __nonnull((1)); 197 #else 198 #ifdef __REDIRECT 199 extern int __REDIRECT(creat, (const char *__file, mode_t __mode), creat64) __nonnull((1)); 200 #else 201 #define creat creat64 202 #endif 203 #endif 204 #ifdef __USE_LARGEFILE64 205 extern int creat64(const char *__file, mode_t __mode) __nonnull((1)); 206 #endif 207 208 #if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \ 209 && !defined __USE_POSIX)) 210 /* NOTE: These declarations also appear in <unistd.h>; be sure to keep both 211 files consistent. Some systems have them there and some here, and some 212 software depends on the macros being defined without including both. */ 213 214 /* `lockf' is a simpler interface to the locking facilities of `fcntl'. 215 LEN is always relative to the current file position. 216 The CMD argument is one of the following. */ 217 218 #define F_ULOCK 0 /* Unlock a previously locked region. */ 219 #define F_LOCK 1 /* Lock a region for exclusive use. */ 220 #define F_TLOCK 2 /* Test and lock a region for exclusive use. */ 221 #define F_TEST 3 /* Test a region for other processes locks. */ 222 223 #ifndef __USE_FILE_OFFSET64 224 extern int lockf(int __fd, int __cmd, off_t __len); 225 #else 226 #ifdef __REDIRECT 227 extern int __REDIRECT(lockf, (int __fd, int __cmd, __off64_t __len), lockf64); 228 #else 229 #define lockf lockf64 230 #endif 231 #endif 232 #ifdef __USE_LARGEFILE64 233 extern int lockf64(int __fd, int __cmd, off64_t __len); 234 #endif 235 #endif 236 237 #ifdef __USE_XOPEN2K 238 /* Advice the system about the expected behaviour of the application with 239 respect to the file associated with FD. */ 240 #ifndef __USE_FILE_OFFSET64 241 extern int posix_fadvise(int __fd, off_t __offset, off_t __len, int __advise) __THROW; 242 #else 243 #ifdef __REDIRECT_NTH 244 extern int __REDIRECT_NTH(posix_fadvise, (int __fd, __off64_t __offset, __off64_t __len, int __advise), posix_fadvise64); 245 #else 246 #define posix_fadvise posix_fadvise64 247 #endif 248 #endif 249 #ifdef __USE_LARGEFILE64 250 extern int posix_fadvise64(int __fd, off64_t __offset, off64_t __len, int __advise) __THROW; 251 #endif 252 253 /* Reserve storage for the data of the file associated with FD. 254 255 This function is a possible cancellation point and therefore not 256 marked with __THROW. */ 257 #ifndef __USE_FILE_OFFSET64 258 extern int posix_fallocate(int __fd, off_t __offset, off_t __len); 259 #else 260 #ifdef __REDIRECT 261 extern int __REDIRECT(posix_fallocate, (int __fd, __off64_t __offset, __off64_t __len), posix_fallocate64); 262 #else 263 #define posix_fallocate posix_fallocate64 264 #endif 265 #endif 266 #ifdef __USE_LARGEFILE64 267 extern int posix_fallocate64(int __fd, off64_t __offset, off64_t __len); 268 #endif 269 #endif 270 271 /* Define some inlines helping to catch common problems. */ 272 #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \ 273 && defined __va_arg_pack_len 274 #include <bits/fcntl2.h> 275 #endif 276 277 __END_DECLS 278 #endif /* fcntl.h */