Subversion Repositories Kolibri OS

Rev

Rev 4874 | Rev 5369 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1.  
  2. #ifndef _SYS__DEFAULT_FCNTL_H_
  3. #ifdef __cplusplus
  4. extern "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 */
  154. struct 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 */
  166. struct 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.  
  182. extern int open _PARAMS ((const char *, int, ...));
  183. extern int creat _PARAMS ((const char *, mode_t));
  184. extern int fcntl _PARAMS ((int, int, ...));
  185. #ifdef __CYGWIN__
  186. #include <sys/time.h>
  187. extern int futimesat _PARAMS ((int, const char *, const struct timeval *));
  188. extern 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
  194. extern int _open _PARAMS ((const char *, int, ...));
  195. extern int _fcntl _PARAMS ((int, int, ...));
  196. #ifdef __LARGE64_FILES
  197. extern int _open64 _PARAMS ((const char *, int, ...));
  198. #endif
  199. #endif
  200.  
  201. #ifdef __cplusplus
  202. }
  203. #endif
  204. #endif  /* !_SYS__DEFAULT_FCNTL_H_ */
  205.