fcntlcom.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:5k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* @(#)fcntlcom.h 1.13 91/06/18 SMI; from UCB fcntl.h 5.2 1/8/86 */
  2. /*
  3.  * Copyright (c) 1983 Regents of the University of California.
  4.  * All rights reserved.  The Berkeley software License Agreement
  5.  * specifies the terms and conditions for redistribution.
  6.  */
  7. #ifndef __sys_fcntlcom_h
  8. #define __sys_fcntlcom_h
  9. #include <sys/cdefs.h>
  10. /*
  11.  * Rewack the FXXXXX values as _FXXXX so that _POSIX_SOURCE works.
  12.  */
  13. #define _FOPEN (-1) /* from sys/file.h, kernel use only */
  14. #define _FREAD 0x0001 /* read enabled */
  15. #define _FWRITE 0x0002 /* write enabled */
  16. #define _FNDELAY 0x0004 /* non blocking I/O (4.2 style) */
  17. #define _FAPPEND 0x0008 /* append (writes guaranteed at the end) */
  18. #define _FSETBLK 0x0010 /* use block offsets */
  19. #define _FASYNC 0x0040 /* signal pgrp when data ready */
  20. #define _FSHLOCK 0x0080 /* BSD flock() shared lock present */
  21. #define _FEXLOCK 0x0100 /* BSD flock() exclusive lock present */
  22. #define _FCREAT 0x0200 /* open with file create */
  23. #define _FTRUNC 0x0400 /* open with truncation */
  24. #define _FEXCL 0x0800 /* error on open if file exists */
  25. #define _FNBIO 0x1000 /* non blocking I/O (sys5 style) */
  26. #define _FSYNC 0x2000 /* do all writes synchronously */
  27. #define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */
  28. #define _FNOCTTY 0x8000 /* don't assign a ctty on this open */
  29. #define _FMARK 0x10000 /* internal; mark during gc() */
  30. #define _FDEFER 0x20000 /* internal; defer for next gc pass */
  31. #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
  32. /*
  33.  * Flag values for open(2) and fcntl(2)
  34.  * The kernel adds 1 to the open modes to turn it into some
  35.  * combination of FREAD and FWRITE.
  36.  */
  37. #define O_RDONLY 0 /* +1 == FREAD */
  38. #define O_WRONLY 1 /* +1 == FWRITE */
  39. #define O_RDWR 2 /* +1 == FREAD|FWRITE */
  40. #define O_APPEND _FAPPEND
  41. #define O_CREAT _FCREAT
  42. #define O_TRUNC _FTRUNC
  43. #define O_EXCL _FEXCL
  44. /* O_SYNC _FSYNC not posix, defined below */
  45. /* O_NDELAY _FNDELAY  set in include/fcntl.h */
  46. /* O_NDELAY _FNBIO  set in 5include/fcntl.h */
  47. #define O_NONBLOCK _FNONBLOCK
  48. #define O_NOCTTY _FNOCTTY
  49. #ifndef _POSIX_SOURCE
  50. #define O_SYNC _FSYNC
  51. /*
  52.  * Flags that work for fcntl(fd, F_SETFL, FXXXX)
  53.  */
  54. #define FAPPEND _FAPPEND
  55. #define FSYNC _FSYNC
  56. #define FASYNC _FASYNC
  57. #define FNBIO _FNBIO
  58. #define FNONBIO _FNONBLOCK /* XXX fix to be NONBLOCK everywhere */
  59. #define FNDELAY _FNDELAY
  60. /*
  61.  * Flags that are disallowed for fcntl's (FCNTLCANT);
  62.  * used for opens, internal state, or locking.
  63.  */
  64. #define FREAD _FREAD
  65. #define FWRITE _FWRITE
  66. #define FMARK _FMARK
  67. #define FDEFER _FDEFER
  68. #define FSETBLK _FSETBLK
  69. #define FSHLOCK _FSHLOCK
  70. #define FEXLOCK _FEXLOCK
  71. /*
  72.  * The rest of the flags, used only for opens
  73.  */
  74. #define FOPEN _FOPEN
  75. #define FCREAT _FCREAT
  76. #define FTRUNC _FTRUNC
  77. #define FEXCL _FEXCL
  78. #define FNOCTTY _FNOCTTY
  79. #endif !_POSIX_SOURCE
  80. /* XXX close on exec request; must match UF_EXCLOSE in user.h */
  81. #define FD_CLOEXEC 1 /* posix */
  82. /* fcntl(2) requests */
  83. #define F_DUPFD 0 /* Duplicate fildes */
  84. #define F_GETFD 1 /* Get fildes flags (close on exec) */
  85. #define F_SETFD 2 /* Set fildes flags (close on exec) */
  86. #define F_GETFL 3 /* Get file flags */
  87. #define F_SETFL 4 /* Set file flags */
  88. #ifndef _POSIX_SOURCE
  89. #define F_GETOWN  5 /* Get owner - for ASYNC */
  90. #define F_SETOWN  6 /* Set owner - for ASYNC */
  91. #endif /* !_POSIX_SOURCE */
  92. #define F_GETLK   7 /* Get record-locking information */
  93. #define F_SETLK   8 /* Set or Clear a record-lock (Non-Blocking) */
  94. #define F_SETLKW  9 /* Set or Clear a record-lock (Blocking) */
  95. #ifndef _POSIX_SOURCE
  96. #define F_RGETLK  10 /* Test a remote lock to see if it is blocked */
  97. #define F_RSETLK  11 /* Set or unlock a remote lock */
  98. #define F_CNVT  12 /* Convert a fhandle to an open fd */
  99. #define F_RSETLKW  13 /* Set or Clear remote record-lock(Blocking) */
  100. #endif /* !_POSIX_SOURCE */
  101. /* fcntl(2) flags (l_type field of flock structure) */
  102. #define F_RDLCK 1 /* read lock */
  103. #define F_WRLCK 2 /* write lock */
  104. #define F_UNLCK 3 /* remove lock(s) */
  105. #ifndef _POSIX_SOURCE
  106. #define F_UNLKSYS 4 /* remove remote locks for a given system */
  107. #endif /* !_POSIX_SOURCE */
  108. #include <sys/stdtypes.h>
  109. /* file segment locking set data type - information passed to system by user */
  110. struct flock {
  111. short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
  112. short l_whence; /* flag to choose starting offset */
  113. long l_start; /* relative offset, in bytes */
  114. long l_len; /* length, in bytes; 0 means lock to EOF */
  115. short l_pid; /* returned with F_GETLK */
  116. short l_xxx; /* reserved for future use */
  117. };
  118. #ifndef _POSIX_SOURCE
  119. /* extended file segment locking set data type */
  120. struct eflock {
  121. short l_type; /* F_RDLCK, F_WRLCK, or F_UNLCK */
  122. short l_whence; /* flag to choose starting offset */
  123. long l_start; /* relative offset, in bytes */
  124. long l_len; /* length, in bytes; 0 means lock to EOF */
  125. short l_pid; /* returned with F_GETLK */
  126. short l_xxx; /* reserved for future use */
  127. long l_rpid; /* Remote process id wanting this lock */
  128. long l_rsys; /* Remote system id wanting this lock */
  129. };
  130. #endif /* !_POSIX_SOURCE */
  131. #ifndef KERNEL
  132. #include <sys/stat.h> /* sigh. for the mode bits for open/creat */
  133. #include <sys/cdefs.h>
  134. __BEGIN_DECLS
  135. int open __P_((const char *path, int flags, ...));
  136. int creat __P_((const char *path, mode_t modes));
  137. int fcntl __P_((int fd, int cmd, ...));
  138. __END_DECLS
  139. #endif /* !KERNEL */
  140. #endif /* !__sys_fcntlcom_h */