xref: /original-bsd/sys/sys/fcntl.h (revision c6d5c0d7)
1 /*-
2  * Copyright (c) 1983, 1990 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  *
7  *	@(#)fcntl.h	5.10 (Berkeley) 02/05/91
8  */
9 
10 #ifndef _FCNTL_H_
11 #define	_FCNTL_H_
12 
13 #ifndef KERNEL
14 #include <sys/types.h>
15 #endif
16 
17 /* command values for fcntl(2) */
18 #define	F_DUPFD		0		/* duplicate file descriptor */
19 #define	F_GETFD		1		/* get file descriptor flags */
20 #define	F_SETFD		2		/* set file descriptor flags */
21 #define	F_GETFL		3		/* get file status flags */
22 #define	F_SETFL		4		/* set file status flags */
23 #ifndef _POSIX_SOURCE
24 #define	F_GETOWN	5		/* get SIGIO/SIGURG proc/pgrp */
25 #define F_SETOWN	6		/* set SIGIO/SIGURG proc/pgrp */
26 #endif
27 #define	F_GETLK		7		/* get record locking information */
28 #define	F_SETLK		8		/* set record locking information */
29 #define	F_SETLKW	9		/* F_SETLK; wait if blocked */
30 
31 /* file descriptor flags (F_GETFD, F_SETFD) */
32 #define	FD_CLOEXEC	1		/* close-on-exec flag */
33 
34 /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
35 #define	F_RDLCK		1		/* shared or read lock */
36 #define	F_UNLCK		2		/* unlock */
37 #define	F_WRLCK		3		/* exclusive or write lock */
38 #ifdef KERNEL
39 #define	F_WAIT		0x010		/* Wait until lock is granted */
40 #define	F_FLOCK		0x020	 	/* Use flock(2) semantics for lock */
41 #define	F_POSIX		0x040	 	/* Use POSIX semantics for lock */
42 #endif
43 
44 #ifndef _POSIX_SOURCE
45 /* lock operations for flock(2) */
46 #define	LOCK_SH		0x01		/* shared file lock */
47 #define	LOCK_EX		0x02		/* exclusive file lock */
48 #define	LOCK_NB		0x04		/* don't block when locking */
49 #define	LOCK_UN		0x08		/* unlock file */
50 #endif
51 
52 /* file status flags */
53 #define	O_RDONLY	00000		/* open for reading only */
54 #define	O_WRONLY	00001		/* open for writing only */
55 #define	O_RDWR		00002		/* open for reading and writing */
56 #define	O_NONBLOCK	00004		/* no delay */
57 #ifndef _POSIX_SOURCE
58 #define	O_NDELAY	O_NONBLOCK
59 #define	FNDELAY		O_NONBLOCK
60 #endif
61 /*			00008		/* unused */
62 #define	O_APPEND	00010		/* set append mode */
63 #ifndef _POSIX_SOURCE
64 #define	FAPPEND		O_APPEND
65 #endif
66 					/* kernel placeholders */
67 #if !defined(_POSIX_SOURCE) && defined(KERNEL)
68 #define	O_MARK		00020		/* mark during gc() */
69 #define	O_DEFER		00040		/* defer for next gc pass */
70 #endif
71 /*			00080		/* unused */
72 #ifndef _POSIX_SOURCE
73 #define	O_ASYNC		00100		/* signal pgrp when data ready */
74 #define	FASYNC		O_ASYNC
75 #define	O_SHLOCK	00200		/* shared file lock present */
76 #define	O_EXLOCK	00400		/* exclusive file lock present */
77 /*			00800		/* unused */
78 #endif
79 #define	O_CREAT		01000		/* create if nonexistant */
80 #define	O_TRUNC		02000		/* truncate to zero length */
81 #define	O_EXCL		04000		/* error if already exists */
82 /*			08000		/* unused */
83 
84 /* defined by POSIX 1003.1; BSD default, so no bit required */
85 #define	O_NOCTTY	0		/* don't assign controlling terminal */
86 
87 /* mask for file access modes */
88 #define	O_ACCMODE	(O_RDONLY|O_WRONLY|O_RDWR)
89 
90 /* file segment locking set data type - information passed to system by user */
91 struct flock {
92 	short	l_type;
93 	short	l_whence;
94 	size_t	l_start;
95 	size_t	l_len;		/* len = 0 means until end of file */
96 	short	l_sysid;
97 	int	l_pid;		/* should be pid_t */
98 };
99 
100 #ifndef KERNEL
101 #include <sys/cdefs.h>
102 
103 __BEGIN_DECLS
104 int	creat __P((const char *, mode_t));
105 int	fcntl __P((int, int, ...));
106 int	open __P((const char *, int, ...));
107 __END_DECLS
108 #endif
109 
110 #endif /* !_FCNTL_H_ */
111