Logo Search packages:      
Sourcecode: glibc version File versions

fcntl.h

/* O_*, F_*, FD_* bit values for GNU.
   Copyright (C) 1993,94,96,97,98,99,2000,01 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

#ifndef _FCNTL_H
# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
#endif

/* File access modes.  These are understood by io servers; they can be
   passed in `dir_lookup', and are returned by `io_get_openmodes'.
   Consequently they can be passed to `open', `hurd_file_name_lookup', and
   `file_name_lookup'; and are returned by `fcntl' with the F_GETFL
   command.  */

/* In GNU, read and write are bits (unlike BSD).  */
#ifdef __USE_GNU
# define O_READ         O_RDONLY /* Open for reading.  */
# define O_WRITE  O_WRONLY /* Open for writing.  */
# define O_EXEC         0x0004      /* Open for execution.  */
# define O_NORW         0     /* Open without R/W access.  */
#endif
/* POSIX.1 standard names.  */
#define     O_RDONLY    0x0001      /* Open read-only.  */
#define     O_WRONLY    0x0002      /* Open write-only.  */
#define     O_RDWR            (O_RDONLY|O_WRONLY) /* Open for reading and writing. */
#define     O_ACCMODE   O_RDWR      /* Mask for file access modes.  */

#define O_LARGEFILE     0


/* File name translation flags.  These are understood by io servers;
   they can be passed in `dir_lookup', and consequently to `open',
   `hurd_file_name_lookup', and `file_name_lookup'.  */

#define     O_CREAT           0x0010      /* Create file if it doesn't exist.  */
#define     O_EXCL            0x0020      /* Fail if file already exists.  */
#ifdef __USE_GNU
# define O_NOLINK 0x0040      /* No name mappings on final component.  */
# define O_NOTRANS      0x0080      /* No translator on final component. */

# define O_NOFOLLOW     0x00100000 /* Produce ENOENT if file is a symlink.  */
# define O_DIRECTORY    0x00200000 /* Produce ENOTDIR if not a directory.  */
#endif


/* I/O operating modes.  These are understood by io servers; they can be
   passed in `dir_lookup' and set or fetched with `io_*_openmodes'.
   Consequently they can be passed to `open', `hurd_file_name_lookup',
   `file_name_lookup', and `fcntl' with the F_SETFL command; and are
   returned by `fcntl' with the F_GETFL command.  */

#define     O_APPEND    0x0100      /* Writes always append to the file.  */
#define O_ASYNC         0x0200      /* Send SIGIO to owner when data is ready.  */
#define O_FSYNC         0x0400      /* Synchronous writes.  */
#define O_SYNC          O_FSYNC
#ifdef __USE_GNU
# define O_NOATIME      0x0800      /* Don't set access time on read (owner).  */
#endif
#ifdef      __USE_MISC
# define O_SHLOCK 0x00020000 /* Open with shared file lock.  */
# define O_EXLOCK 0x00040000 /* Open with exclusive file lock.  */
#endif

/* These are lesser flavors of partial synchronization that are
   implied by our one flag (O_FSYNC).  */
#if defined __USE_POSIX199309 || defined __USE_UNIX98
# define O_DSYNC  O_SYNC      /* Synchronize data.  */
# define O_RSYNC  O_SYNC      /* Synchronize read operations.      */
#endif


/* The name O_NONBLOCK is unfortunately overloaded; it is both a file name
   translation flag and an I/O operating mode.  O_NDELAY is the deprecated
   BSD name for the same flag, overloaded in the same way.

   When used in `dir_lookup' (and consequently `open', `hurd_file_name_lookup',
   or `file_name_lookup'), O_NONBLOCK says the open should return immediately
   instead of blocking for any significant length of time (e.g., to wait
   for carrier detect on a serial line).  It is also saved as an I/O
   operating mode, and after open has the following meaning.

   When used in `io_*_openmodes' (and consequently `fcntl' with the F_SETFL
   command), the O_NONBLOCK flag means to do nonblocking i/o: any i/o
   operation that would block for any significant length of time will instead
   fail with EAGAIN.  */

#define     O_NONBLOCK  0x0008      /* Non-blocking open or non-blocking I/O.  */
#ifdef __USE_BSD
# define O_NDELAY O_NONBLOCK /* Deprecated.  */
#endif


#ifdef __USE_GNU
/* Mask of bits which are understood by io servers.  */
# define O_HURD         (0xffff | O_EXLOCK | O_SHLOCK)
#endif


/* Open-time action flags.  These are understood by `hurd_file_name_lookup'
   and consequently by `open' and `file_name_lookup'.  They are not preserved
   once the file has been opened.  */

#define     O_TRUNC           0x00010000 /* Truncate file to zero length.  */


/* Controlling terminal flags.  These are understood only by `open',
   and are not preserved once the file has been opened.  */

#ifdef __USE_GNU
# define O_IGNORE_CTTY  0x00080000 /* Don't do any ctty magic at all.  */
#endif
/* `open' never assigns a controlling terminal in GNU.  */
#define     O_NOCTTY    0     /* Don't assign a controlling terminal.  */


#ifdef __USE_BSD
/* Bits in the file status flags returned by F_GETFL.  */
# define FREAD          O_RDONLY
# define FWRITE         O_WRONLY

/* Traditional BSD names the O_* bits.  */
# define FASYNC         O_ASYNC
# define FCREAT         O_CREAT
# define FEXCL          O_EXCL
# define FTRUNC         O_TRUNC
# define FNOCTTY  O_NOCTTY
# define FFSYNC         O_FSYNC
# define FSYNC          O_SYNC
# define FAPPEND  O_APPEND
# define FNONBLOCK      O_NONBLOCK
# define FNDELAY  O_NDELAY
#endif


/* Values for the second argument to `fcntl'.  */
#define     F_DUPFD           0     /* Duplicate file descriptor.  */
#define     F_GETFD           1     /* Get file descriptor flags.  */
#define     F_SETFD           2     /* Set file descriptor flags.  */
#define     F_GETFL           3     /* Get file status flags.  */
#define     F_SETFL           4     /* Set file status flags.  */
#if defined __USE_BSD || defined __USE_XOPEN2K
# define F_GETOWN 5     /* Get owner (receiver of SIGIO).  */
# define F_SETOWN 6     /* Set owner (receiver of SIGIO).  */
#endif
#define     F_GETLK           7     /* Get record locking info.  */
#define     F_SETLK           8     /* Set record locking info (non-blocking).  */
#define     F_SETLKW    9     /* Set record locking info (blocking).  */

/* File descriptor flags used with F_GETFD and F_SETFD.  */
#define     FD_CLOEXEC  1     /* Close on exec.  */


#include <bits/types.h>

/* The structure describing an advisory lock.  This is the type of the third
   argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
struct flock
  {
    int l_type;         /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
    int l_whence; /* Where `l_start' is relative to (like `lseek').  */
#ifndef __USE_FILE_OFFSET64
    __off_t l_start;    /* Offset where the lock begins.  */
    __off_t l_len;      /* Size of the locked area; zero means until EOF.  */
#else
    __off64_t l_start;  /* Offset where the lock begins.  */
    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
#endif
    __pid_t l_pid;      /* Process holding the lock.  */
  };

#ifdef __USE_LARGEFILE64
struct flock64
  {
    int l_type;         /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
    int l_whence; /* Where `l_start' is relative to (like `lseek').  */
    __off64_t l_start;  /* Offset where the lock begins.  */
    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
    __pid_t l_pid;      /* Process holding the lock.  */
  };
#endif

/* Values for the `l_type' field of a `struct flock'.  */
#define     F_RDLCK     1     /* Read lock.  */
#define     F_WRLCK     2     /* Write lock.  */
#define     F_UNLCK     3     /* Remove lock.  */

/* Advise to `posix_fadvise'.  */
#ifdef __USE_XOPEN2K
# define POSIX_FADV_NORMAL    0 /* No further special treatment.  */
# define POSIX_FADV_RANDOM    1 /* Expect random page references.  */
# define POSIX_FADV_SEQUENTIAL      2 /* Expect sequential page references.  */
# define POSIX_FADV_WILLNEED  3 /* Will need these pages.  */
# define POSIX_FADV_DONTNEED  4 /* Don't need these pages.  */
# define POSIX_FADV_NOREUSE   5 /* Data will be accessed once.  */
#endif

Generated by  Doxygen 1.6.0   Back to index