File: /Users/paulross/dev/linux/linux-3.13/include/uapi/asm-generic/fcntl.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef _ASM_GENERIC_FCNTL_H
       2: #define _ASM_GENERIC_FCNTL_H
       3: 
       4: #include <linux/types.h>
       5: 
       6: /*
       7:  * FMODE_EXEC is 0x20
       8:  * FMODE_NONOTIFY is 0x1000000
       9:  * These cannot be used by userspace O_* until internal and external open
      10:  * flags are split.
      11:  * -Eric Paris
      12:  */
      13: 
      14: /*
      15:  * When introducing new O_* bits, please check its uniqueness in fcntl_init().
      16:  */
      17: 
      18: #define O_ACCMODE    00000003
      19: #define O_RDONLY    00000000
      20: #define O_WRONLY    00000001
      21: #define O_RDWR        00000002
      22: #ifndef O_CREAT
      23: #define O_CREAT        00000100    /* not fcntl */
      24: #endif
      25: #ifndef O_EXCL
      26: #define O_EXCL        00000200    /* not fcntl */
      27: #endif
      28: #ifndef O_NOCTTY
      29: #define O_NOCTTY    00000400    /* not fcntl */
      30: #endif
      31: #ifndef O_TRUNC
      32: #define O_TRUNC        00001000    /* not fcntl */
      33: #endif
      34: #ifndef O_APPEND
      35: #define O_APPEND    00002000
      36: #endif
      37: #ifndef O_NONBLOCK
      38: #define O_NONBLOCK    00004000
      39: #endif
      40: #ifndef O_DSYNC
      41: #define O_DSYNC        00010000    /* used to be O_SYNC, see below */
      42: #endif
      43: #ifndef FASYNC
      44: #define FASYNC        00020000    /* fcntl, for BSD compatibility */
      45: #endif
      46: #ifndef O_DIRECT
      47: #define O_DIRECT    00040000    /* direct disk access hint */
      48: #endif
      49: #ifndef O_LARGEFILE
      50: #define O_LARGEFILE    00100000
      51: #endif
      52: #ifndef O_DIRECTORY
      53: #define O_DIRECTORY    00200000    /* must be a directory */
      54: #endif
      55: #ifndef O_NOFOLLOW
      56: #define O_NOFOLLOW    00400000    /* don't follow links */
      57: #endif
      58: #ifndef O_NOATIME
      59: #define O_NOATIME    01000000
      60: #endif
      61: #ifndef O_CLOEXEC
      62: #define O_CLOEXEC    02000000    /* set close_on_exec */
      63: #endif
      64: 
      65: /*
      66:  * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using
      67:  * the O_SYNC flag.  We continue to use the existing numerical value
      68:  * for O_DSYNC semantics now, but using the correct symbolic name for it.
      69:  * This new value is used to request true Posix O_SYNC semantics.  It is
      70:  * defined in this strange way to make sure applications compiled against
      71:  * new headers get at least O_DSYNC semantics on older kernels.
      72:  *
      73:  * This has the nice side-effect that we can simply test for O_DSYNC
      74:  * wherever we do not care if O_DSYNC or O_SYNC is used.
      75:  *
      76:  * Note: __O_SYNC must never be used directly.
      77:  */
      78: #ifndef O_SYNC
      79: #define __O_SYNC    04000000
      80: #define O_SYNC        (__O_SYNC|O_DSYNC)
      81: #endif
      82: 
      83: #ifndef O_PATH
      84: #define O_PATH        010000000
      85: #endif
      86: 
      87: #ifndef __O_TMPFILE
      88: #define __O_TMPFILE    020000000
      89: #endif
      90: 
      91: /* a horrid kludge trying to make sure that this will fail on old kernels */
      92: #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
      93: #define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)      
      94: 
      95: #ifndef O_NDELAY
      96: #define O_NDELAY    O_NONBLOCK
      97: #endif
      98: 
      99: #define F_DUPFD        0    /* dup */
     100: #define F_GETFD        1    /* get close_on_exec */
     101: #define F_SETFD        2    /* set/clear close_on_exec */
     102: #define F_GETFL        3    /* get file->f_flags */
     103: #define F_SETFL        4    /* set file->f_flags */
     104: #ifndef F_GETLK
     105: #define F_GETLK        5
     106: #define F_SETLK        6
     107: #define F_SETLKW    7
     108: #endif
     109: #ifndef F_SETOWN
     110: #define F_SETOWN    8    /* for sockets. */
     111: #define F_GETOWN    9    /* for sockets. */
     112: #endif
     113: #ifndef F_SETSIG
     114: #define F_SETSIG    10    /* for sockets. */
     115: #define F_GETSIG    11    /* for sockets. */
     116: #endif
     117: 
     118: #ifndef CONFIG_64BIT
     119: #ifndef F_GETLK64
     120: #define F_GETLK64    12    /*  using 'struct flock64' */
     121: #define F_SETLK64    13
     122: #define F_SETLKW64    14
     123: #endif
     124: #endif
     125: 
     126: #ifndef F_SETOWN_EX
     127: #define F_SETOWN_EX    15
     128: #define F_GETOWN_EX    16
     129: #endif
     130: 
     131: #ifndef F_GETOWNER_UIDS
     132: #define F_GETOWNER_UIDS    17
     133: #endif
     134: 
     135: #define F_OWNER_TID    0
     136: #define F_OWNER_PID    1
     137: #define F_OWNER_PGRP    2
     138: 
     139: struct f_owner_ex {
     140:     int    type;
     141:     __kernel_pid_t    pid;
     142: };
     143: 
     144: /* for F_[GET|SET]FL */
     145: #define FD_CLOEXEC    1    /* actually anything with low bit set goes */
     146: 
     147: /* for posix fcntl() and lockf() */
     148: #ifndef F_RDLCK
     149: #define F_RDLCK        0
     150: #define F_WRLCK        1
     151: #define F_UNLCK        2
     152: #endif
     153: 
     154: /* for old implementation of bsd flock () */
     155: #ifndef F_EXLCK
     156: #define F_EXLCK        4    /* or 3 */
     157: #define F_SHLCK        8    /* or 4 */
     158: #endif
     159: 
     160: /* operations for bsd flock(), also used by the kernel implementation */
     161: #define LOCK_SH        1    /* shared lock */
     162: #define LOCK_EX        2    /* exclusive lock */
     163: #define LOCK_NB        4    /* or'd with one of the above to prevent
     164:                    blocking */
     165: #define LOCK_UN        8    /* remove lock */
     166: 
     167: #define LOCK_MAND    32    /* This is a mandatory flock ... */
     168: #define LOCK_READ    64    /* which allows concurrent read operations */
     169: #define LOCK_WRITE    128    /* which allows concurrent write operations */
     170: #define LOCK_RW        192    /* which allows concurrent read & write ops */
     171: 
     172: #define F_LINUX_SPECIFIC_BASE    1024
     173: 
     174: #ifndef HAVE_ARCH_STRUCT_FLOCK
     175: #ifndef __ARCH_FLOCK_PAD
     176: #define __ARCH_FLOCK_PAD
     177: #endif
     178: 
     179: struct flock {
     180:     short    l_type;
     181:     short    l_whence;
     182:     __kernel_off_t    l_start;
     183:     __kernel_off_t    l_len;
     184:     __kernel_pid_t    l_pid;
     185:     __ARCH_FLOCK_PAD
     186: };
     187: #endif
     188: 
     189: #ifndef CONFIG_64BIT
     190: 
     191: #ifndef HAVE_ARCH_STRUCT_FLOCK64
     192: #ifndef __ARCH_FLOCK64_PAD
     193: #define __ARCH_FLOCK64_PAD
     194: #endif
     195: 
     196: struct flock64 {
     197:     short  l_type;
     198:     short  l_whence;
     199:     __kernel_loff_t l_start;
     200:     __kernel_loff_t l_len;
     201:     __kernel_pid_t  l_pid;
     202:     __ARCH_FLOCK64_PAD
     203: };
     204: #endif
     205: #endif /* !CONFIG_64BIT */
     206: 
     207: #endif /* _ASM_GENERIC_FCNTL_H */
     208: