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