[PATCH] Clean up the fcntl operations
[linux-2.6] / include / asm-generic / fcntl.h
1 #ifndef _ASM_GENERIC_FCNTL_H
2 #define _ASM_GENERIC_FCNTL_H
3
4 /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
5    located on an ext2 file system */
6 #define O_ACCMODE       00000003
7 #define O_RDONLY        00000000
8 #define O_WRONLY        00000001
9 #define O_RDWR          00000002
10 #ifndef O_CREAT
11 #define O_CREAT         00000100        /* not fcntl */
12 #endif
13 #ifndef O_EXCL
14 #define O_EXCL          00000200        /* not fcntl */
15 #endif
16 #ifndef O_NOCTTY
17 #define O_NOCTTY        00000400        /* not fcntl */
18 #endif
19 #ifndef O_TRUNC
20 #define O_TRUNC         00001000        /* not fcntl */
21 #endif
22 #ifndef O_APPEND
23 #define O_APPEND        00002000
24 #endif
25 #ifndef O_NONBLOCK
26 #define O_NONBLOCK      00004000
27 #endif
28 #ifndef O_SYNC
29 #define O_SYNC          00010000
30 #endif
31 #ifndef FASYNC
32 #define FASYNC          00020000        /* fcntl, for BSD compatibility */
33 #endif
34 #ifndef O_DIRECT
35 #define O_DIRECT        00040000        /* direct disk access hint */
36 #endif
37 #ifndef O_LARGEFILE
38 #define O_LARGEFILE     00100000
39 #endif
40 #ifndef O_DIRECTORY
41 #define O_DIRECTORY     00200000        /* must be a directory */
42 #endif
43 #ifndef O_NOFOLLOW
44 #define O_NOFOLLOW      00400000        /* don't follow links */
45 #endif
46 #ifndef O_NOATIME
47 #define O_NOATIME       01000000
48 #endif
49 #ifndef O_NDELAY
50 #define O_NDELAY        O_NONBLOCK
51 #endif
52
53 #define F_DUPFD         0       /* dup */
54 #define F_GETFD         1       /* get close_on_exec */
55 #define F_SETFD         2       /* set/clear close_on_exec */
56 #define F_GETFL         3       /* get file->f_flags */
57 #define F_SETFL         4       /* set file->f_flags */
58 #ifndef F_GETLK
59 #define F_GETLK         5
60 #define F_SETLK         6
61 #define F_SETLKW        7
62 #endif
63 #ifndef F_SETOWN
64 #define F_SETOWN        8       /* for sockets. */
65 #define F_GETOWN        9       /* for sockets. */
66 #endif
67 #ifndef F_SETSIG
68 #define F_SETSIG        10      /* for sockets. */
69 #define F_GETSIG        11      /* for sockets. */
70 #endif
71
72 /* for F_[GET|SET]FL */
73 #define FD_CLOEXEC      1       /* actually anything with low bit set goes */
74
75 /* for posix fcntl() and lockf() */
76 #ifndef F_RDLCK
77 #define F_RDLCK         0
78 #define F_WRLCK         1
79 #define F_UNLCK         2
80 #endif
81
82 /* for old implementation of bsd flock () */
83 #ifndef F_EXLCK
84 #define F_EXLCK         4       /* or 3 */
85 #define F_SHLCK         8       /* or 4 */
86 #endif
87
88 /* for leases */
89 #ifndef F_INPROGRESS
90 #define F_INPROGRESS    16
91 #endif
92
93 /* operations for bsd flock(), also used by the kernel implementation */
94 #define LOCK_SH         1       /* shared lock */
95 #define LOCK_EX         2       /* exclusive lock */
96 #define LOCK_NB         4       /* or'd with one of the above to prevent
97                                    blocking */
98 #define LOCK_UN         8       /* remove lock */
99
100 #define LOCK_MAND       32      /* This is a mandatory flock ... */
101 #define LOCK_READ       64      /* which allows concurrent read operations */
102 #define LOCK_WRITE      128     /* which allows concurrent write operations */
103 #define LOCK_RW         192     /* which allows concurrent read & write ops */
104
105 #define F_LINUX_SPECIFIC_BASE   1024
106
107 #endif /* _ASM_GENERIC_FCNTL_H */