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 #ifndef CONFIG_64BIT
     78 #ifndef F_GETLK64
     79 #define F_GETLK64	12	/*  using 'struct flock64' */
     80 #define F_SETLK64	13
     81 #define F_SETLKW64	14
     82 #endif
     83 #endif
     84 
     85 #ifndef F_SETOWN_EX
     86 #define F_SETOWN_EX	15
     87 #define F_GETOWN_EX	16
     88 #endif
     89 
     90 #define F_OWNER_TID	0
     91 #define F_OWNER_PID	1
     92 #define F_OWNER_PGRP	2
     93 
     94 struct f_owner_ex {
     95 	int	type;
     96 	pid_t	pid;
     97 };
     98 
     99 /* for F_[GET|SET]FL */
    100 #define FD_CLOEXEC	1	/* actually anything with low bit set goes */
    101 
    102 /* for posix fcntl() and lockf() */
    103 #ifndef F_RDLCK
    104 #define F_RDLCK		0
    105 #define F_WRLCK		1
    106 #define F_UNLCK		2
    107 #endif
    108 
    109 /* for old implementation of bsd flock () */
    110 #ifndef F_EXLCK
    111 #define F_EXLCK		4	/* or 3 */
    112 #define F_SHLCK		8	/* or 4 */
    113 #endif
    114 
    115 /* for leases */
    116 #ifndef F_INPROGRESS
    117 #define F_INPROGRESS	16
    118 #endif
    119 
    120 /* operations for bsd flock(), also used by the kernel implementation */
    121 #define LOCK_SH		1	/* shared lock */
    122 #define LOCK_EX		2	/* exclusive lock */
    123 #define LOCK_NB		4	/* or'd with one of the above to prevent
    124 				   blocking */
    125 #define LOCK_UN		8	/* remove lock */
    126 
    127 #define LOCK_MAND	32	/* This is a mandatory flock ... */
    128 #define LOCK_READ	64	/* which allows concurrent read operations */
    129 #define LOCK_WRITE	128	/* which allows concurrent write operations */
    130 #define LOCK_RW		192	/* which allows concurrent read & write ops */
    131 
    132 #define F_LINUX_SPECIFIC_BASE	1024
    133 
    134 #ifndef HAVE_ARCH_STRUCT_FLOCK
    135 #ifndef __ARCH_FLOCK_PAD
    136 #define __ARCH_FLOCK_PAD
    137 #endif
    138 
    139 struct flock {
    140 	short	l_type;
    141 	short	l_whence;
    142 	__kernel_off_t	l_start;
    143 	__kernel_off_t	l_len;
    144 	__kernel_pid_t	l_pid;
    145 	__ARCH_FLOCK_PAD
    146 };
    147 #endif
    148 
    149 #ifndef CONFIG_64BIT
    150 
    151 #ifndef HAVE_ARCH_STRUCT_FLOCK64
    152 #ifndef __ARCH_FLOCK64_PAD
    153 #define __ARCH_FLOCK64_PAD
    154 #endif
    155 
    156 struct flock64 {
    157 	short  l_type;
    158 	short  l_whence;
    159 	__kernel_loff_t l_start;
    160 	__kernel_loff_t l_len;
    161 	__kernel_pid_t  l_pid;
    162 	__ARCH_FLOCK64_PAD
    163 };
    164 #endif
    165 #endif /* !CONFIG_64BIT */
    166 
    167 #endif /* _ASM_GENERIC_FCNTL_H */
    168