fcntl.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021: #ifndef _FCNTL_H
022: # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
023: #endif
024:
025: #include <sys/types.h>
026: #include <bits/wordsize.h>
027: #ifdef __USE_GNU
028: # include <bits/uio.h>
029: #endif
030:
031:
032:
033:
034: #define O_ACCMODE 0003
035: #define O_RDONLY 00
036: #define O_WRONLY 01
037: #define O_RDWR 02
038: #define O_CREAT 0100
039: #define O_EXCL 0200
040: #define O_NOCTTY 0400
041: #define O_TRUNC 01000
042: #define O_APPEND 02000
043: #define O_NONBLOCK 04000
044: #define O_NDELAY O_NONBLOCK
045: #define O_SYNC 04010000
046: #define O_FSYNC O_SYNC
047: #define O_ASYNC 020000
048:
049: #ifdef __USE_XOPEN2K8
050: # define O_DIRECTORY 0200000
051: # define O_NOFOLLOW 0400000
052: # define O_CLOEXEC 02000000
053: #endif
054: #ifdef __USE_GNU
055: # define O_DIRECT 040000
056: # define O_NOATIME 01000000
057: # define O_PATH 010000000
058: #endif
059:
060:
061:
062:
063: #if defined __USE_POSIX199309 || defined __USE_UNIX98
064: # define O_DSYNC 010000
065: # define O_RSYNC O_SYNC
066: #endif
067:
068: #ifdef __USE_LARGEFILE64
069: # if __WORDSIZE == 64
070: # define O_LARGEFILE 0
071: # else
072: # define O_LARGEFILE 0100000
073: # endif
074: #endif
075:
076:
077: #define F_DUPFD 0
078: #define F_GETFD 1
079: #define F_SETFD 2
080: #define F_GETFL 3
081: #define F_SETFL 4
082: #if __WORDSIZE == 64
083: # define F_GETLK 5
084: # define F_SETLK 6
085: # define F_SETLKW 7
086:
087: # define F_GETLK64 5
088: # define F_SETLK64 6
089: # define F_SETLKW64 7
090: #else
091: # ifndef __USE_FILE_OFFSET64
092: # define F_GETLK 5
093: # define F_SETLK 6
094: # define F_SETLKW 7
095: # else
096: # define F_GETLK F_GETLK64
097: # define F_SETLK F_SETLK64
098: # define F_SETLKW F_SETLKW64
099: # endif
100: # define F_GETLK64 12
101: # define F_SETLK64 13
102: # define F_SETLKW64 14
103: #endif
104:
105: #if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
106: # define F_SETOWN 8
107: # define F_GETOWN 9
108: #endif
109:
110: #ifdef __USE_GNU
111: # define F_SETSIG 10
112: # define F_GETSIG 11
113: # define F_SETOWN_EX 15
114: # define F_GETOWN_EX 16
115: #endif
116:
117: #ifdef __USE_GNU
118: # define F_SETLEASE 1024
119: # define F_GETLEASE 1025
120: # define F_NOTIFY 1026
121: # define F_SETPIPE_SZ 1031
122: # define F_GETPIPE_SZ 1032
123: #endif
124: #ifdef __USE_XOPEN2K8
125: # define F_DUPFD_CLOEXEC 1030
126:
127: #endif
128:
129:
130: #define FD_CLOEXEC 1
131:
132:
133: #define F_RDLCK 0
134: #define F_WRLCK 1
135: #define F_UNLCK 2
136:
137:
138: #define F_EXLCK 4
139: #define F_SHLCK 8
140:
141: #ifdef __USE_BSD
142:
143: # define LOCK_SH 1
144: # define LOCK_EX 2
145: # define LOCK_NB 4
146:
147: # define LOCK_UN 8
148: #endif
149:
150: #ifdef __USE_GNU
151: # define LOCK_MAND 32
152: # define LOCK_READ 64
153: # define LOCK_WRITE 128
154: # define LOCK_RW 192
155: #endif
156:
157: #ifdef __USE_GNU
158:
159: # define DN_ACCESS 0x00000001
160: # define DN_MODIFY 0x00000002
161: # define DN_CREATE 0x00000004
162: # define DN_DELETE 0x00000008
163: # define DN_RENAME 0x00000010
164: # define DN_ATTRIB 0x00000020
165: # define DN_MULTISHOT 0x80000000
166: #endif
167:
168: struct flock
169: {
170: short int l_type;
171: short int l_whence;
172: #ifndef __USE_FILE_OFFSET64
173: __off_t l_start;
174: __off_t l_len;
175: #else
176: __off64_t l_start;
177: __off64_t l_len;
178: #endif
179: __pid_t l_pid;
180: };
181:
182: #ifdef __USE_LARGEFILE64
183: struct flock64
184: {
185: short int l_type;
186: short int l_whence;
187: __off64_t l_start;
188: __off64_t l_len;
189: __pid_t l_pid;
190: };
191: #endif
192:
193: #ifdef __USE_GNU
194:
195: enum __pid_type
196: {
197: F_OWNER_TID = 0,
198: F_OWNER_PID,
199: F_OWNER_PGRP,
200: F_OWNER_GID = F_OWNER_PGRP
201: };
202:
203:
204: struct f_owner_ex
205: {
206: enum __pid_type type;
207: __pid_t pid;
208: };
209: #endif
210:
211:
212:
213: #ifdef __USE_BSD
214: # define FAPPEND O_APPEND
215: # define FFSYNC O_FSYNC
216: # define FASYNC O_ASYNC
217: # define FNONBLOCK O_NONBLOCK
218: # define FNDELAY O_NDELAY
219: #endif
220:
221:
222: #ifdef __USE_XOPEN2K
223: # define POSIX_FADV_NORMAL 0
224: # define POSIX_FADV_RANDOM 1
225: # define POSIX_FADV_SEQUENTIAL 2
226: # define POSIX_FADV_WILLNEED 3
227: # define POSIX_FADV_DONTNEED 4
228: # define POSIX_FADV_NOREUSE 5
229: #endif
230:
231:
232: #ifdef __USE_GNU
233:
234: # define SYNC_FILE_RANGE_WAIT_BEFORE 1
235:
236:
237: # define SYNC_FILE_RANGE_WRITE 2
238:
239:
240: # define SYNC_FILE_RANGE_WAIT_AFTER 4
241:
242:
243:
244:
245: # define SPLICE_F_MOVE 1
246: # define SPLICE_F_NONBLOCK 2
247:
248:
249: # define SPLICE_F_MORE 4
250: # define SPLICE_F_GIFT 8
251:
252:
253:
254: struct file_handle
255: {
256: unsigned int handle_bytes;
257: int handle_type;
258:
259: unsigned char f_handle[0];
260: };
261:
262:
263: # define MAX_HANDLE_SZ 128
264: #endif
265:
266:
267: #ifdef __USE_ATFILE
268: # define AT_FDCWD -100
269:
270:
271: # define AT_SYMLINK_NOFOLLOW 0x100
272: # define AT_REMOVEDIR 0x200
273:
274: # define AT_SYMLINK_FOLLOW 0x400
275: # define AT_NO_AUTOMOUNT 0x800
276:
277: # define AT_EACCESS 0x200
278:
279: #endif
280:
281: __BEGIN_DECLS
282:
283: #ifdef __USE_GNU
284:
285:
286: extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
287: __THROW;
288:
289:
290:
291:
292:
293:
294: extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
295: unsigned int __flags);
296:
297:
298:
299:
300:
301:
302: extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
303: size_t __count, unsigned int __flags);
304:
305:
306:
307:
308:
309: extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
310: __off64_t *__offout, size_t __len,
311: unsigned int __flags);
312:
313:
314:
315:
316:
317: extern ssize_t tee (int __fdin, int __fdout, size_t __len,
318: unsigned int __flags);
319:
320:
321:
322:
323:
324: # ifndef __USE_FILE_OFFSET64
325: extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
326: # else
327: # ifdef __REDIRECT
328: extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
329: __off64_t __len),
330: fallocate64);
331: # else
332: # define fallocate fallocate64
333: # endif
334: # endif
335: # ifdef __USE_LARGEFILE64
336: extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
337: __off64_t __len);
338: # endif
339:
340:
341:
342: extern int name_to_handle_at (int __dfd, const char *__name,
343: struct file_handle *__handle, int *__mnt_id,
344: int __flags) __THROW;
345:
346:
347:
348:
349:
350: extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle,
351: int __flags);
352:
353: #endif
354:
355: __END_DECLS
356:
© Andrew Scott 2006 -
2025,
All Rights Reserved