1 2#ifndef _SYS__DEFAULT_FCNTL_H_ 3#ifdef __cplusplus 4extern "C" { 5#endif 6#define _SYS__DEFAULT_FCNTL_H_ 7#include <_ansi.h> 8#define _FOPEN (-1) /* from sys/file.h, kernel use only */ 9#define _FREAD 0x0001 /* read enabled */ 10#define _FWRITE 0x0002 /* write enabled */ 11#define _FAPPEND 0x0008 /* append (writes guaranteed at the end) */ 12#define _FMARK 0x0010 /* internal; mark during gc() */ 13#define _FDEFER 0x0020 /* internal; defer for next gc pass */ 14#define _FASYNC 0x0040 /* signal pgrp when data ready */ 15#define _FSHLOCK 0x0080 /* BSD flock() shared lock present */ 16#define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */ 17#define _FCREAT 0x0200 /* open with file create */ 18#define _FTRUNC 0x0400 /* open with truncation */ 19#define _FEXCL 0x0800 /* error on open if file exists */ 20#define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */ 21#define _FSYNC 0x2000 /* do all writes synchronously */ 22#define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */ 23#define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */ 24#define _FNOCTTY 0x8000 /* don't assign a ctty on this open */ 25 26#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) 27 28/* 29 * Flag values for open(2) and fcntl(2) 30 * The kernel adds 1 to the open modes to turn it into some 31 * combination of FREAD and FWRITE. 32 */ 33#define O_RDONLY 0 /* +1 == FREAD */ 34#define O_WRONLY 1 /* +1 == FWRITE */ 35#define O_RDWR 2 /* +1 == FREAD|FWRITE */ 36#define O_APPEND _FAPPEND 37#define O_CREAT _FCREAT 38#define O_TRUNC _FTRUNC 39#define O_EXCL _FEXCL 40#define O_SYNC _FSYNC 41/* O_NDELAY _FNDELAY set in include/fcntl.h */ 42/* O_NDELAY _FNBIO set in include/fcntl.h */ 43#define O_NONBLOCK _FNONBLOCK 44#define O_NOCTTY _FNOCTTY 45/* For machines which care - */ 46#if defined (_WIN32) || defined (__CYGWIN__) 47#define _FBINARY 0x10000 48#define _FTEXT 0x20000 49#define _FNOINHERIT 0x40000 50 51#define O_BINARY _FBINARY 52#define O_TEXT _FTEXT 53#define O_NOINHERIT _FNOINHERIT 54/* O_CLOEXEC is the Linux equivalent to O_NOINHERIT */ 55#define O_CLOEXEC _FNOINHERIT 56 57/* The windows header files define versions with a leading underscore. */ 58#define _O_RDONLY O_RDONLY 59#define _O_WRONLY O_WRONLY 60#define _O_RDWR O_RDWR 61#define _O_APPEND O_APPEND 62#define _O_CREAT O_CREAT 63#define _O_TRUNC O_TRUNC 64#define _O_EXCL O_EXCL 65#define _O_TEXT O_TEXT 66#define _O_BINARY O_BINARY 67#define _O_RAW O_BINARY 68#define _O_NOINHERIT O_NOINHERIT 69#endif 70 71#ifndef _POSIX_SOURCE 72 73/* 74 * Flags that work for fcntl(fd, F_SETFL, FXXXX) 75 */ 76#define FAPPEND _FAPPEND 77#define FSYNC _FSYNC 78#define FASYNC _FASYNC 79#define FNBIO _FNBIO 80#define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */ 81#define FNDELAY _FNDELAY 82 83/* 84 * Flags that are disallowed for fcntl's (FCNTLCANT); 85 * used for opens, internal state, or locking. 86 */ 87#define FREAD _FREAD 88#define FWRITE _FWRITE 89#define FMARK _FMARK 90#define FDEFER _FDEFER 91#define FSHLOCK _FSHLOCK 92#define FEXLOCK _FEXLOCK 93 94/* 95 * The rest of the flags, used only for opens 96 */ 97#define FOPEN _FOPEN 98#define FCREAT _FCREAT 99#define FTRUNC _FTRUNC 100#define FEXCL _FEXCL 101#define FNOCTTY _FNOCTTY 102 103#endif /* !_POSIX_SOURCE */ 104 105/* XXX close on exec request; must match UF_EXCLOSE in user.h */ 106#define FD_CLOEXEC 1 /* posix */ 107 108/* fcntl(2) requests */ 109#define F_DUPFD 0 /* Duplicate fildes */ 110#define F_GETFD 1 /* Get fildes flags (close on exec) */ 111#define F_SETFD 2 /* Set fildes flags (close on exec) */ 112#define F_GETFL 3 /* Get file flags */ 113#define F_SETFL 4 /* Set file flags */ 114#ifndef _POSIX_SOURCE 115#define F_GETOWN 5 /* Get owner - for ASYNC */ 116#define F_SETOWN 6 /* Set owner - for ASYNC */ 117#endif /* !_POSIX_SOURCE */ 118#define F_GETLK 7 /* Get record-locking information */ 119#define F_SETLK 8 /* Set or Clear a record-lock (Non-Blocking) */ 120#define F_SETLKW 9 /* Set or Clear a record-lock (Blocking) */ 121#ifndef _POSIX_SOURCE 122#define F_RGETLK 10 /* Test a remote lock to see if it is blocked */ 123#define F_RSETLK 11 /* Set or unlock a remote lock */ 124#define F_CNVT 12 /* Convert a fhandle to an open fd */ 125#define F_RSETLKW 13 /* Set or Clear remote record-lock(Blocking) */ 126#endif /* !_POSIX_SOURCE */ 127#ifdef __CYGWIN__ 128#define F_DUPFD_CLOEXEC 14 /* As F_DUPFD, but set close-on-exec flag */ 129#endif 130 131/* fcntl(2) flags (l_type field of flock structure) */ 132#define F_RDLCK 1 /* read lock */ 133#define F_WRLCK 2 /* write lock */ 134#define F_UNLCK 3 /* remove lock(s) */ 135#ifndef _POSIX_SOURCE 136#define F_UNLKSYS 4 /* remove remote locks for a given system */ 137#endif /* !_POSIX_SOURCE */ 138 139#ifdef __CYGWIN__ 140/* Special descriptor value to denote the cwd in calls to openat(2) etc. */ 141#define AT_FDCWD -2 142 143/* Flag values for faccessat2) et al. */ 144#define AT_EACCESS 1 145#define AT_SYMLINK_NOFOLLOW 2 146#define AT_SYMLINK_FOLLOW 4 147#define AT_REMOVEDIR 8 148#endif 149 150/*#include <sys/stdtypes.h>*/ 151 152#ifndef __CYGWIN__ 153/* file segment locking set data type - information passed to system by user */ 154struct flock { 155 short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ 156 short l_whence; /* flag to choose starting offset */ 157 long l_start; /* relative offset, in bytes */ 158 long l_len; /* length, in bytes; 0 means lock to EOF */ 159 short l_pid; /* returned with F_GETLK */ 160 short l_xxx; /* reserved for future use */ 161}; 162#endif /* __CYGWIN__ */ 163 164#ifndef _POSIX_SOURCE 165/* extended file segment locking set data type */ 166struct eflock { 167 short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */ 168 short l_whence; /* flag to choose starting offset */ 169 long l_start; /* relative offset, in bytes */ 170 long l_len; /* length, in bytes; 0 means lock to EOF */ 171 short l_pid; /* returned with F_GETLK */ 172 short l_xxx; /* reserved for future use */ 173 long l_rpid; /* Remote process id wanting this lock */ 174 long l_rsys; /* Remote system id wanting this lock */ 175}; 176#endif /* !_POSIX_SOURCE */ 177 178 179#include <sys/types.h> 180#include <sys/stat.h> /* sigh. for the mode bits for open/creat */ 181 182extern int open _PARAMS ((const char *, int, ...)); 183extern int creat _PARAMS ((const char *, mode_t)); 184extern int fcntl _PARAMS ((int, int, ...)); 185#ifdef __CYGWIN__ 186#include <sys/time.h> 187extern int futimesat _PARAMS ((int, const char *, const struct timeval *)); 188extern int openat _PARAMS ((int, const char *, int, ...)); 189#endif 190 191/* Provide _<systemcall> prototypes for functions provided by some versions 192 of newlib. */ 193#ifdef _COMPILING_NEWLIB 194extern int _open _PARAMS ((const char *, int, ...)); 195extern int _fcntl _PARAMS ((int, int, ...)); 196#ifdef __LARGE64_FILES 197extern int _open64 _PARAMS ((const char *, int, ...)); 198#endif 199#endif 200 201#ifdef __cplusplus 202} 203#endif 204#endif /* !_SYS__DEFAULT_FCNTL_H_ */ 205