Home | History | Annotate | Download | only in asm-generic
      1 #ifndef _ASM_GENERIC_FCNTL_H
      2 #define _ASM_GENERIC_FCNTL_H
      3 
      4 #include <linux/types.h>
      5 
      6 /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
      7    located on an ext2 file system */
      8 #define O_ACCMODE	00000003
      9 #define O_RDONLY	00000000
     10 #define O_WRONLY	00000001
     11 #define O_RDWR		00000002
     12 #ifndef O_CREAT
     13 #define O_CREAT		00000100	/* not fcntl */
     14 #endif
     15 #ifndef O_EXCL
     16 #define O_EXCL		00000200	/* not fcntl */
     17 #endif
     18 #ifndef O_NOCTTY
     19 #define O_NOCTTY	00000400	/* not fcntl */
     20 #endif
     21 #ifndef O_TRUNC
     22 #define O_TRUNC		00001000	/* not fcntl */
     23 #endif
     24 #ifndef O_APPEND
     25 #define O_APPEND	00002000
     26 #endif
     27 #ifndef O_NONBLOCK
     28 #define O_NONBLOCK	00004000
     29 #endif
     30 #ifndef O_SYNC
     31 #define O_SYNC		00010000
     32 #endif
     33 #ifndef FASYNC
     34 #define FASYNC		00020000	/* fcntl, for BSD compatibility */
     35 #endif
     36 #ifndef O_DIRECT
     37 #define O_DIRECT	00040000	/* direct disk access hint */
     38 #endif
     39 #ifndef O_LARGEFILE
     40 #define O_LARGEFILE	00100000
     41 #endif
     42 #ifndef O_DIRECTORY
     43 #define O_DIRECTORY	00200000	/* must be a directory */
     44 #endif
     45 #ifndef O_NOFOLLOW
     46 #define O_NOFOLLOW	00400000	/* don't follow links */
     47 #endif
     48 #ifndef O_NOATIME
     49 #define O_NOATIME	01000000
     50 #endif
     51 #ifndef O_CLOEXEC
     52 #define O_CLOEXEC	02000000	/* set close_on_exec */
     53 #endif
     54 #ifndef O_NDELAY
     55 #define O_NDELAY	O_NONBLOCK
     56 #endif
     57 
     58 #define F_DUPFD		0	/* dup */
     59 #define F_GETFD		1	/* get close_on_exec */
     60 #define F_SETFD		2	/* set/clear close_on_exec */
     61 #define F_GETFL		3	/* get file->f_flags */
     62 #define F_SETFL		4	/* set file->f_flags */
     63 #ifndef F_GETLK
     64 #define F_GETLK		5
     65 #define F_SETLK		6
     66 #define F_SETLKW	7
     67 #endif
     68 #ifndef F_SETOWN
     69 #define F_SETOWN	8	/* for sockets. */
     70 #define F_GETOWN	9	/* for sockets. */
     71 #endif
     72 #ifndef F_SETSIG
     73 #define F_SETSIG	10	/* for sockets. */
     74 #define F_GETSIG	11	/* for sockets. */
     75 #endif
     76 
     77 /* for F_[GET|SET]FL */
     78 #define FD_CLOEXEC	1	/* actually anything with low bit set goes */
     79 
     80 /* for posix fcntl() and lockf() */
     81 #ifndef F_RDLCK
     82 #define F_RDLCK		0
     83 #define F_WRLCK		1
     84 #define F_UNLCK		2
     85 #endif
     86 
     87 /* for old implementation of bsd flock () */
     88 #ifndef F_EXLCK
     89 #define F_EXLCK		4	/* or 3 */
     90 #define F_SHLCK		8	/* or 4 */
     91 #endif
     92 
     93 /* for leases */
     94 #ifndef F_INPROGRESS
     95 #define F_INPROGRESS	16
     96 #endif
     97 
     98 /* operations for bsd flock(), also used by the kernel implementation */
     99 #define LOCK_SH		1	/* shared lock */
    100 #define LOCK_EX		2	/* exclusive lock */
    101 #define LOCK_NB		4	/* or'd with one of the above to prevent
    102 				   blocking */
    103 #define LOCK_UN		8	/* remove lock */
    104 
    105 #define LOCK_MAND	32	/* This is a mandatory flock ... */
    106 #define LOCK_READ	64	/* which allows concurrent read operations */
    107 #define LOCK_WRITE	128	/* which allows concurrent write operations */
    108 #define LOCK_RW		192	/* which allows concurrent read & write ops */
    109 
    110 #define F_LINUX_SPECIFIC_BASE	1024
    111 
    112 #ifndef HAVE_ARCH_STRUCT_FLOCK
    113 #ifndef __ARCH_FLOCK_PAD
    114 #define __ARCH_FLOCK_PAD
    115 #endif
    116 
    117 struct flock {
    118 	short	l_type;
    119 	short	l_whence;
    120 	off_t	l_start;
    121 	off_t	l_len;
    122 	pid_t	l_pid;
    123 	__ARCH_FLOCK_PAD
    124 };
    125 #endif
    126 
    127 #ifndef CONFIG_64BIT
    128 
    129 #ifndef F_GETLK64
    130 #define F_GETLK64	12	/*  using 'struct flock64' */
    131 #define F_SETLK64	13
    132 #define F_SETLKW64	14
    133 #endif
    134 
    135 #ifndef HAVE_ARCH_STRUCT_FLOCK64
    136 #ifndef __ARCH_FLOCK64_PAD
    137 #define __ARCH_FLOCK64_PAD
    138 #endif
    139 
    140 struct flock64 {
    141 	short  l_type;
    142 	short  l_whence;
    143 	loff_t l_start;
    144 	loff_t l_len;
    145 	pid_t  l_pid;
    146 	__ARCH_FLOCK64_PAD
    147 };
    148 #endif
    149 #endif /* !CONFIG_64BIT */
    150 
    151 #endif /* _ASM_GENERIC_FCNTL_H */
    152