1: /*-
   2:  * Copyright (c) 1983, 1990, 1993
   3:  *	The Regents of the University of California.  All rights reserved.
   4:  * (c) UNIX System Laboratories, Inc.
   5:  * All or some portions of this file are derived from material licensed
   6:  * to the University of California by American Telephone and Telegraph
   7:  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
   8:  * the permission of UNIX System Laboratories, Inc.
   9:  *
  10:  * Redistribution and use in source and binary forms, with or without
  11:  * modification, are permitted provided that the following conditions
  12:  * are met:
  13:  * 1. Redistributions of source code must retain the above copyright
  14:  *    notice, this list of conditions and the following disclaimer.
  15:  * 2. Redistributions in binary form must reproduce the above copyright
  16:  *    notice, this list of conditions and the following disclaimer in the
  17:  *    documentation and/or other materials provided with the distribution.
  18:  * 3. All advertising materials mentioning features or use of this software
  19:  *    must display the following acknowledgement:
  20:  *	This product includes software developed by the University of
  21:  *	California, Berkeley and its contributors.
  22:  * 4. Neither the name of the University nor the names of its contributors
  23:  *    may be used to endorse or promote products derived from this software
  24:  *    without specific prior written permission.
  25:  *
  26:  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36:  * SUCH DAMAGE.
  37:  *
  38:  *	@(#)fcntl.h	8.3.1 (2.11BSD GTE) 11/25/94
  39:  *
  40:  * Copied from 4.4-Lite and modified for 2.11BSD.  The modifications consisted
  41:  * of removing: function prototypes (I don't like them, the compiler does not
  42:  * support them, and it would mean dragging in cdefs.h to leave them in here),
  43:  * #ifndef _POSIX_SOURCE lines (silly) and record locking related definitions
  44:  * If anyone adds any of the above it will be easy enough to modify this file.
  45:  * In the meantime why bog down (or blow up) cpp any further?
  46:  */
  47: 
  48: #ifndef _FCNTL_H_
  49: #define _FCNTL_H_
  50: 
  51: /*
  52:  * This file includes the definitions for open and fcntl
  53:  * described by POSIX for <fcntl.h>; it also includes
  54:  * related kernel definitions.
  55:  */
  56: 
  57: #ifndef KERNEL
  58: #include <sys/types.h>
  59: #endif
  60: 
  61: /*
  62:  * File status flags: these are used by open(2), fcntl(2).
  63:  * They are also used (indirectly) in the kernel file structure f_flags,
  64:  * which is a superset of the open/fcntl flags.  Open flags and f_flags
  65:  * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
  66:  * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
  67:  */
  68: /* open-only flags */
  69: #define O_RDONLY    0x0000      /* open for reading only */
  70: #define O_WRONLY    0x0001      /* open for writing only */
  71: #define O_RDWR      0x0002      /* open for reading and writing */
  72: #define O_ACCMODE   0x0003      /* mask for above modes */
  73: 
  74: /*
  75:  * Kernel encoding of open mode; separate read and write bits that are
  76:  * independently testable: 1 greater than the above.
  77:  *
  78:  * XXX
  79:  * FREAD and FWRITE are excluded from the #ifdef KERNEL so that TIOCFLUSH,
  80:  * which was documented to use FREAD/FWRITE, continues to work.
  81:  */
  82: #define FREAD       0x0001
  83: #define FWRITE      0x0002
  84: #define O_NONBLOCK  0x0004      /* no delay */
  85: #define O_APPEND    0x0008      /* set append mode */
  86: #define O_SHLOCK    0x0010      /* open with shared file lock */
  87: #define O_EXLOCK    0x0020      /* open with exclusive file lock */
  88: #define O_ASYNC     0x0040      /* signal pgrp when data ready */
  89: #define O_FSYNC     0x0080      /* synchronous writes */
  90: #define O_CREAT     0x0200      /* create if nonexistant */
  91: #define O_TRUNC     0x0400      /* truncate to zero length */
  92: #define O_EXCL      0x0800      /* error if already exists */
  93: #ifdef KERNEL
  94: #define FMARK       0x1000      /* mark during gc() */
  95: #define FDEFER      0x2000      /* defer for next gc pass */
  96: #endif
  97: 
  98: /* defined by POSIX 1003.1; not 2.11BSD default, so bit is required */
  99: /* Not currently implemented but it may be placed on the TODO list shortly */
 100: #define O_NOCTTY    0x4000      /* don't assign controlling terminal */
 101: 
 102: #ifdef KERNEL
 103: /* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */
 104: #define FFLAGS(oflags)  ((oflags) + 1)
 105: #define OFLAGS(fflags)  ((fflags) - 1)
 106: 
 107: /* bits to save after open */
 108: #define FMASK       (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
 109: /* bits settable by fcntl(F_SETFL, ...) */
 110: #define FCNTLFLAGS  (FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
 111: #endif
 112: 
 113: /*
 114:  * The O_* flags used to have only F* names, which were used in the kernel
 115:  * and by fcntl.  We retain the F* names for the kernel f_flags field
 116:  * and for backward compatibility for fcntl.
 117:  */
 118: #define FAPPEND     O_APPEND    /* kernel/compat */
 119: #define FASYNC      O_ASYNC     /* kernel/compat */
 120: #define FFSYNC      O_FSYNC     /* kernel */
 121: #define FEXLOCK     O_EXLOCK    /* kernel */
 122: #define FSHLOCK     O_SHLOCK    /* kernel */
 123: #define FNONBLOCK   O_NONBLOCK  /* kernel */
 124: #define FNDELAY     O_NONBLOCK  /* compat */
 125: #define O_NDELAY    O_NONBLOCK  /* compat */
 126: 
 127: /*
 128:  * Constants used for fcntl(2)
 129:  */
 130: 
 131: /* command values */
 132: #define F_DUPFD     0       /* duplicate file descriptor */
 133: #define F_GETFD     1       /* get file descriptor flags */
 134: #define F_SETFD     2       /* set file descriptor flags */
 135: #define F_GETFL     3       /* get file status flags */
 136: #define F_SETFL     4       /* set file status flags */
 137: #define F_GETOWN    5       /* get SIGIO/SIGURG proc/pgrp */
 138: #define F_SETOWN    6       /* set SIGIO/SIGURG proc/pgrp */
 139: 
 140: /* file descriptor flags (F_GETFD, F_SETFD) */
 141: #define FD_CLOEXEC  1       /* close-on-exec flag */
 142: 
 143: /* lock operations for flock(2) */
 144: #define LOCK_SH     0x01        /* shared file lock */
 145: #define LOCK_EX     0x02        /* exclusive file lock */
 146: #define LOCK_NB     0x04        /* don't block when locking */
 147: #define LOCK_UN     0x08        /* unlock file */
 148: #endif /* !_FCNTL_H_ */

Defined macros

FCNTLFLAGS defined in line 110; used 2 times
FD_CLOEXEC defined in line 141; never used
FFLAGS defined in line 104; used 2 times
FFSYNC defined in line 120; used 3 times
FMASK defined in line 108; used 1 times
F_DUPFD defined in line 132; used 2 times
F_GETFD defined in line 133; never used
F_GETOWN defined in line 137; never used
F_SETOWN defined in line 138; used 4 times
OFLAGS defined in line 105; used 1 times
O_ACCMODE defined in line 72; never used
O_ASYNC defined in line 88; used 1 times
O_CREAT defined in line 90; used 64 times
O_EXLOCK defined in line 87; used 5 times
O_FSYNC defined in line 89; used 2 times
O_NOCTTY defined in line 100; never used
O_RDONLY defined in line 69; used 110 times
O_RDWR defined in line 71; used 82 times
O_SHLOCK defined in line 86; used 2 times
O_WRONLY defined in line 70; used 69 times
_FCNTL_H_ defined in line 49; used 1 times
  • in line 48

Usage of this include

fcntl.h used 66 times
Last modified: 1994-11-30
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 5175
Valid CSS Valid XHTML 1.0 Strict