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  */