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