The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/bsd/sys/fcntl.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 2000-2001 Apple Computer, Inc. All rights reserved.
    3  *
    4  * @APPLE_LICENSE_HEADER_START@
    5  * 
    6  * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
    7  * 
    8  * This file contains Original Code and/or Modifications of Original Code
    9  * as defined in and that are subject to the Apple Public Source License
   10  * Version 2.0 (the 'License'). You may not use this file except in
   11  * compliance with the License. Please obtain a copy of the License at
   12  * http://www.opensource.apple.com/apsl/ and read it before using this
   13  * file.
   14  * 
   15  * The Original Code and all software distributed under the License are
   16  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
   17  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
   18  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
   19  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
   20  * Please see the License for the specific language governing rights and
   21  * limitations under the License.
   22  * 
   23  * @APPLE_LICENSE_HEADER_END@
   24  */
   25 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
   26 /*-
   27  * Copyright (c) 1983, 1990, 1993
   28  *      The Regents of the University of California.  All rights reserved.
   29  * (c) UNIX System Laboratories, Inc.
   30  * All or some portions of this file are derived from material licensed
   31  * to the University of California by American Telephone and Telegraph
   32  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
   33  * the permission of UNIX System Laboratories, Inc.
   34  *
   35  * Redistribution and use in source and binary forms, with or without
   36  * modification, are permitted provided that the following conditions
   37  * are met:
   38  * 1. Redistributions of source code must retain the above copyright
   39  *    notice, this list of conditions and the following disclaimer.
   40  * 2. Redistributions in binary form must reproduce the above copyright
   41  *    notice, this list of conditions and the following disclaimer in the
   42  *    documentation and/or other materials provided with the distribution.
   43  * 3. All advertising materials mentioning features or use of this software
   44  *    must display the following acknowledgement:
   45  *      This product includes software developed by the University of
   46  *      California, Berkeley and its contributors.
   47  * 4. Neither the name of the University nor the names of its contributors
   48  *    may be used to endorse or promote products derived from this software
   49  *    without specific prior written permission.
   50  *
   51  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   52  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   53  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   54  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   55  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   56  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   57  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   58  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   59  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   60  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   61  * SUCH DAMAGE.
   62  *
   63  *      @(#)fcntl.h     8.3 (Berkeley) 1/21/94
   64  */
   65 
   66 
   67 #ifndef _SYS_FCNTL_H_
   68 #define _SYS_FCNTL_H_
   69 
   70 /*
   71  * This file includes the definitions for open and fcntl
   72  * described by POSIX for <fcntl.h>; it also includes
   73  * related kernel definitions.
   74  */
   75 
   76 #ifndef KERNEL
   77 #include <sys/types.h>
   78 #endif
   79 
   80 /*
   81  * File status flags: these are used by open(2), fcntl(2).
   82  * They are also used (indirectly) in the kernel file structure f_flags,
   83  * which is a superset of the open/fcntl flags.  Open flags and f_flags
   84  * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
   85  * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
   86  */
   87 /* open-only flags */
   88 #define O_RDONLY        0x0000          /* open for reading only */
   89 #define O_WRONLY        0x0001          /* open for writing only */
   90 #define O_RDWR          0x0002          /* open for reading and writing */
   91 #define O_ACCMODE       0x0003          /* mask for above modes */
   92 
   93 /*
   94  * Kernel encoding of open mode; separate read and write bits that are
   95  * independently testable: 1 greater than the above.
   96  *
   97  * XXX
   98  * FREAD and FWRITE are excluded from the #ifdef KERNEL so that TIOCFLUSH,
   99  * which was documented to use FREAD/FWRITE, continues to work.
  100  */
  101 #ifndef _POSIX_SOURCE
  102 #define FREAD           0x0001
  103 #define FWRITE          0x0002
  104 #endif
  105 #define O_NONBLOCK      0x0004          /* no delay */
  106 #define O_APPEND        0x0008          /* set append mode */
  107 #ifndef _POSIX_SOURCE
  108 #define O_SHLOCK        0x0010          /* open with shared file lock */
  109 #define O_EXLOCK        0x0020          /* open with exclusive file lock */
  110 #define O_ASYNC         0x0040          /* signal pgrp when data ready */
  111 #define O_FSYNC         0x0080          /* synchronous writes */
  112 #define O_NOFOLLOW  0x0100      /* don't follow symlinks */
  113 #endif
  114 #define O_CREAT         0x0200          /* create if nonexistant */
  115 #define O_TRUNC         0x0400          /* truncate to zero length */
  116 #define O_EXCL          0x0800          /* error if already exists */
  117 #ifdef KERNEL
  118 #define FMARK           0x1000          /* mark during gc() */
  119 #define FDEFER          0x2000          /* defer for next gc pass */
  120 #define FHASLOCK        0x4000          /* descriptor holds advisory lock */
  121 #endif
  122 #ifndef _POSIX_SOURCE
  123 #define O_EVTONLY       0x8000          /* descriptor requested for event notifications only */
  124 #endif
  125 
  126 /* defined by POSIX 1003.1; BSD default, so no bit required */
  127 #define O_NOCTTY        0               /* don't assign controlling terminal */
  128 
  129 #ifdef KERNEL
  130 /* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */
  131 #define FFLAGS(oflags)  ((oflags) + 1)
  132 #define OFLAGS(fflags)  ((fflags) - 1)
  133 
  134 /* bits to save after open */
  135 #define FMASK           (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
  136 /* bits settable by fcntl(F_SETFL, ...) */
  137 #define FCNTLFLAGS      (FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
  138 #endif
  139 
  140 /*
  141  * The O_* flags used to have only F* names, which were used in the kernel
  142  * and by fcntl.  We retain the F* names for the kernel f_flags field
  143  * and for backward compatibility for fcntl.
  144  */
  145 #ifndef _POSIX_SOURCE
  146 #define FAPPEND         O_APPEND        /* kernel/compat */
  147 #define FASYNC          O_ASYNC         /* kernel/compat */
  148 #define FFSYNC          O_FSYNC         /* kernel */
  149 #define FNONBLOCK       O_NONBLOCK      /* kernel */
  150 #define FNDELAY         O_NONBLOCK      /* compat */
  151 #define O_NDELAY        O_NONBLOCK      /* compat */
  152 #endif
  153 
  154 /*
  155  * Flags used for copyfile(2)
  156  */
  157 
  158 #ifndef _POSIX_SOURCE
  159 #define CPF_OVERWRITE 1
  160 #define CPF_IGNORE_MODE 2
  161 #define CPF_MASK (CPF_OVERWRITE|CPF_IGNORE_MODE)
  162 #endif
  163 
  164 /*
  165  * Constants used for fcntl(2)
  166  */
  167 
  168 /* command values */
  169 #define F_DUPFD         0               /* duplicate file descriptor */
  170 #define F_GETFD         1               /* get file descriptor flags */
  171 #define F_SETFD         2               /* set file descriptor flags */
  172 #define F_GETFL         3               /* get file status flags */
  173 #define F_SETFL         4               /* set file status flags */
  174 #ifndef _POSIX_SOURCE
  175 #define F_GETOWN        5               /* get SIGIO/SIGURG proc/pgrp */
  176 #define F_SETOWN        6               /* set SIGIO/SIGURG proc/pgrp */
  177 #endif
  178 #define F_GETLK         7               /* get record locking information */
  179 #define F_SETLK         8               /* set record locking information */
  180 #define F_SETLKW        9               /* F_SETLK; wait if blocked */
  181 #define F_CHKCLEAN      41              /* Used for regression test */
  182 #define F_PREALLOCATE   42              /* Preallocate storage */
  183 #define F_SETSIZE       43              /* Truncate a file without zeroing space */     
  184 #define F_RDADVISE      44              /* Issue an advisory read async with no copy to user */
  185 #define F_RDAHEAD       45              /* turn read ahead off/on */
  186 #define F_READBOOTSTRAP 46              /* Read bootstrap from disk */
  187 #define F_WRITEBOOTSTRAP 47             /* Write bootstrap on disk */
  188 #define F_NOCACHE       48              /* turning data caching off/on */
  189 #define F_LOG2PHYS      49              /* file offset to device offset */
  190 #define F_GETPATH       50              /* return the full path of the fd */
  191 #define F_FULLFSYNC     51              /* fsync + ask the drive to flush to the media */
  192 
  193 /* file descriptor flags (F_GETFD, F_SETFD) */
  194 #define FD_CLOEXEC      1               /* close-on-exec flag */
  195 
  196 /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
  197 #define F_RDLCK         1               /* shared or read lock */
  198 #define F_UNLCK         2               /* unlock */
  199 #define F_WRLCK         3               /* exclusive or write lock */
  200 #ifdef KERNEL
  201 #define F_WAIT          0x010           /* Wait until lock is granted */
  202 #define F_FLOCK         0x020           /* Use flock(2) semantics for lock */
  203 #define F_POSIX         0x040           /* Use POSIX semantics for lock */
  204 #endif
  205 
  206 /* allocate flags (F_PREALLOCATE) */
  207 
  208 #define F_ALLOCATECONTIG  0x00000002    /* allocate contigious space */
  209 #define F_ALLOCATEALL     0x00000004    /* allocate all requested space or no space at all */
  210 
  211 /* Position Modes (fst_posmode) for F_PREALLOCATE */
  212 
  213 #define F_PEOFPOSMODE 3                 /* Make it past all of the SEEK pos modes so that */
  214                                         /* we can keep them in sync should we desire */ 
  215 #define F_VOLPOSMODE    4               /* specify volume starting postion */
  216 
  217 /*
  218  * Advisory file segment locking data type -
  219  * information passed to system by user
  220  */
  221 struct flock {
  222         off_t   l_start;        /* starting offset */
  223         off_t   l_len;          /* len = 0 means until end of file */
  224         pid_t   l_pid;          /* lock owner */
  225         short   l_type;         /* lock type: read/write, etc. */
  226         short   l_whence;       /* type of l_start */
  227 };
  228 
  229 
  230 /*
  231  * advisory file read data type -
  232  * information passed by user to system
  233  */
  234 struct radvisory {
  235        off_t   ra_offset;
  236        int     ra_count;
  237 };
  238 
  239 
  240 #ifndef _POSIX_SOURCE
  241 /* lock operations for flock(2) */
  242 #define LOCK_SH         0x01            /* shared file lock */
  243 #define LOCK_EX         0x02            /* exclusive file lock */
  244 #define LOCK_NB         0x04            /* don't block when locking */
  245 #define LOCK_UN         0x08            /* unlock file */
  246 #endif
  247 
  248 /*  fstore_t type used by F_DEALLOCATE and F_PREALLOCATE commands */
  249 
  250 typedef struct fstore {
  251         u_int32_t fst_flags;    /* IN: flags word */
  252         int     fst_posmode;    /* IN: indicates use of offset field */
  253         off_t   fst_offset;     /* IN: start of the region */
  254         off_t   fst_length;     /* IN: size of the region */
  255         off_t   fst_bytesalloc; /* OUT: number of bytes allocated */
  256 } fstore_t;
  257 
  258 /* fbootstraptransfer_t used by F_READBOOTSTRAP and F_WRITEBOOTSTRAP commands */
  259 
  260 typedef struct fbootstraptransfer {
  261   off_t fbt_offset;             /* IN: offset to start read/write */
  262   size_t fbt_length;            /* IN: number of bytes to transfer */
  263   void *fbt_buffer;             /* IN: buffer to be read/written */
  264 } fbootstraptransfer_t;
  265 
  266 /*
  267  * For F_LOG2PHYS this information is passed back to user
  268  * Currently only devoffset is returned - that is the VOP_BMAP
  269  * result - the disk device address corresponding to the
  270  * current file offset (likely set with an lseek).
  271  *
  272  * The flags could hold an indication of whether the # of 
  273  * contiguous bytes reflects the true extent length on disk,
  274  * or is an advisory value that indicates there is at least that
  275  * many bytes contiguous.  For some filesystems it might be too
  276  * inefficient to provide anything beyond the advisory value.
  277  * Flags and contiguous bytes return values are not yet implemented.
  278  * For them the fcntl will nedd to switch from using BMAP to CMAP
  279  * and a per filesystem type flag will be needed to interpret the
  280  * contiguous bytes count result from CMAP.
  281  */
  282 struct log2phys {
  283         u_int32_t       l2p_flags;              /* unused so far */
  284         off_t           l2p_contigbytes;        /* unused so far */
  285         off_t           l2p_devoffset;  /* bytes into device */
  286 };
  287 
  288 #ifndef _POSIX_SOURCE
  289 #define O_POPUP    0x80000000   /* force window to popup on open */
  290 #define O_ALERT    0x20000000   /* small, clean popup window */
  291 #endif
  292 
  293 #ifndef KERNEL
  294 #include <sys/cdefs.h>
  295 
  296 __BEGIN_DECLS
  297 int     open __P((const char *, int, ...));
  298 int     creat __P((const char *, mode_t));
  299 int     fcntl __P((int, int, ...));
  300 #ifndef _POSIX_SOURCE
  301 int     flock __P((int, int));
  302 #endif /* !_POSIX_SOURCE */
  303 __END_DECLS
  304 #endif
  305 
  306 #endif /* !_SYS_FCNTL_H_ */

Cache object: b219bed0da96cc99c7a699aa2deacf05


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.