xref: /plan9/sys/include/ape/fcntl.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
13e12c5d1SDavid du Colombier #ifndef __FCNTL_H
23e12c5d1SDavid du Colombier #define __FCNTL_H
33e12c5d1SDavid du Colombier #ifndef _POSIX_SOURCE
43e12c5d1SDavid du Colombier    This header file is not defined in pure ANSI
53e12c5d1SDavid du Colombier #endif
63e12c5d1SDavid du Colombier #pragma lib "/$M/lib/ape/libap.a"
73e12c5d1SDavid du Colombier 
8*59cc4ca5SDavid du Colombier #include	<sys/types.h>
9*59cc4ca5SDavid du Colombier 
103e12c5d1SDavid du Colombier #define	O_RDONLY 0
113e12c5d1SDavid du Colombier #define	O_WRONLY 1
123e12c5d1SDavid du Colombier #define	O_RDWR	 2
133e12c5d1SDavid du Colombier #define O_ACCMODE	0x003
143e12c5d1SDavid du Colombier #define O_NONBLOCK	0x004
153e12c5d1SDavid du Colombier #define O_APPEND	0x008
163e12c5d1SDavid du Colombier #define O_CREAT		0x100
173e12c5d1SDavid du Colombier #define O_TRUNC		0x200
183e12c5d1SDavid du Colombier #define O_EXCL		0x400
193e12c5d1SDavid du Colombier #define O_NOCTTY	0x800
207dd7cddfSDavid du Colombier #define O_DSYNC		0x1000
217dd7cddfSDavid du Colombier #define	O_RSYNC		0x2000
227dd7cddfSDavid du Colombier #define O_SYNC		0x4000
233e12c5d1SDavid du Colombier 
243e12c5d1SDavid du Colombier #define	F_DUPFD		0	/* Duplicate fildes */
253e12c5d1SDavid du Colombier #define	F_GETFD		1	/* Get fildes flags */
263e12c5d1SDavid du Colombier #define	F_SETFD		2	/* Set fildes flags */
273e12c5d1SDavid du Colombier #define	F_GETFL		3	/* Get file flags */
283e12c5d1SDavid du Colombier #define	F_SETFL		4	/* Set file flags */
293e12c5d1SDavid du Colombier #define	F_GETLK		5	/* Get file lock */
303e12c5d1SDavid du Colombier #define	F_SETLK		6	/* Set file lock */
313e12c5d1SDavid du Colombier #define	F_SETLKW	7	/* Set file lock and wait */
323e12c5d1SDavid du Colombier 
333e12c5d1SDavid du Colombier #define FD_CLOEXEC	1
343e12c5d1SDavid du Colombier 
353e12c5d1SDavid du Colombier struct flock {
363e12c5d1SDavid du Colombier 	short	l_type;
373e12c5d1SDavid du Colombier 	short	l_whence;
383e12c5d1SDavid du Colombier 	off_t	l_start;
393e12c5d1SDavid du Colombier 	off_t	l_len;
403e12c5d1SDavid du Colombier 	pid_t	l_pid;
413e12c5d1SDavid du Colombier };
423e12c5d1SDavid du Colombier 
433e12c5d1SDavid du Colombier #define F_RDLCK		1	/* shared or read lock */
443e12c5d1SDavid du Colombier #define F_UNLCK		2	/* unlock */
453e12c5d1SDavid du Colombier #define F_WRLCK		3	/* exclusive or write lock */
463e12c5d1SDavid du Colombier 
473e12c5d1SDavid du Colombier #ifdef __cplusplus
483e12c5d1SDavid du Colombier extern "C" {
493e12c5d1SDavid du Colombier #endif
503e12c5d1SDavid du Colombier 
513e12c5d1SDavid du Colombier extern int fcntl(int, int, ...);
523e12c5d1SDavid du Colombier extern int open(const char *, int, ...);
533e12c5d1SDavid du Colombier extern int creat(const char *, mode_t);
543e12c5d1SDavid du Colombier 
553e12c5d1SDavid du Colombier #ifdef __cplusplus
563e12c5d1SDavid du Colombier }
573e12c5d1SDavid du Colombier #endif
583e12c5d1SDavid du Colombier 
593e12c5d1SDavid du Colombier #endif
60