blob: cbaec5dae87559babdf1633a89ecf1f680b1a8a1 [file] [log] [blame]
Rich Felker0b44a032011-02-12 00:22:29 -05001#ifndef _FCNTL_H
2#define _FCNTL_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Rich Felkerc1a96582012-09-07 23:13:55 -04008#include <features.h>
9
Rich Felker0b44a032011-02-12 00:22:29 -050010#define __NEED_off_t
11#define __NEED_pid_t
12#define __NEED_mode_t
13
Rich Felker53147f92012-07-23 16:50:56 -040014#ifdef _GNU_SOURCE
15#define __NEED_size_t
16#define __NEED_ssize_t
17#define __NEED_struct_iovec
18#endif
19
Rich Felker0b44a032011-02-12 00:22:29 -050020#include <bits/alltypes.h>
21
22#include <bits/fcntl.h>
23
24struct flock
25{
26 short l_type;
27 short l_whence;
28 off_t l_start;
29 off_t l_len;
30 pid_t l_pid;
31};
32
33int creat(const char *, mode_t);
34int fcntl(int, int, ...);
35int open(const char *, int, ...);
36int openat(int, const char *, int, ...);
37int posix_fadvise(int, off_t, off_t, int);
38int posix_fallocate(int, off_t, off_t);
39
Rich Felkerc2b18f32011-04-14 21:49:22 -040040#define O_ACCMODE 03
41#define O_RDONLY 00
42#define O_WRONLY 01
43#define O_RDWR 02
44
Rich Felker67b25fe2012-04-15 17:05:10 -040045#define F_DUPFD_CLOEXEC 1030
46
Rich Felkerc2b18f32011-04-14 21:49:22 -040047#define F_RDLCK 0
48#define F_WRLCK 1
49#define F_UNLCK 2
50
51#define FD_CLOEXEC 1
52
53#define AT_FDCWD (-100)
54#define AT_SYMLINK_NOFOLLOW 0x100
55#define AT_REMOVEDIR 0x200
56#define AT_SYMLINK_FOLLOW 0x400
57#define AT_EACCESS 0x200
58
59#define POSIX_FADV_NORMAL 0
60#define POSIX_FADV_RANDOM 1
61#define POSIX_FADV_SEQUENTIAL 2
62#define POSIX_FADV_WILLNEED 3
63#define POSIX_FADV_DONTNEED 4
64#define POSIX_FADV_NOREUSE 5
65
Rich Felker0b44a032011-02-12 00:22:29 -050066#undef SEEK_SET
67#undef SEEK_CUR
68#undef SEEK_END
69#define SEEK_SET 0
70#define SEEK_CUR 1
71#define SEEK_END 2
72
Rich Felkerac12eb92011-03-08 12:35:35 -050073#ifndef S_IRUSR
74#define S_ISUID 04000
75#define S_ISGID 02000
76#define S_ISVTX 01000
77#define S_IRUSR 0400
78#define S_IWUSR 0200
79#define S_IXUSR 0100
80#define S_IRWXU 0700
81#define S_IRGRP 0040
82#define S_IWGRP 0020
83#define S_IXGRP 0010
84#define S_IRWXG 0070
85#define S_IROTH 0004
86#define S_IWOTH 0002
87#define S_IXOTH 0001
88#define S_IRWXO 0007
89#endif
90
Rich Felker419ae6d2012-05-22 21:52:08 -040091#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
Rich Felkera3aa89d2011-04-14 22:06:30 -040092#define FAPPEND O_APPEND
93#define FFSYNC O_FSYNC
94#define FASYNC O_ASYNC
95#define FNONBLOCK O_NONBLOCK
96#define FNDELAY O_NDELAY
Rich Felker419ae6d2012-05-22 21:52:08 -040097
Rich Felker419ae6d2012-05-22 21:52:08 -040098#define F_OK 0
99#define R_OK 4
100#define W_OK 2
101#define X_OK 1
102#define F_ULOCK 0
103#define F_LOCK 1
104#define F_TLOCK 2
105#define F_TEST 3
Rich Felker671ffab2012-05-22 22:04:55 -0400106
Rich Felker419ae6d2012-05-22 21:52:08 -0400107int lockf(int, int, off_t);
108#endif
Rich Felkera3aa89d2011-04-14 22:06:30 -0400109
Rich Felker4e8b0932012-06-20 22:16:47 -0400110#if defined(_GNU_SOURCE)
111#define F_OWNER_TID 0
112#define F_OWNER_PID 1
113#define F_OWNER_PGRP 2
114#define F_OWNER_GID 2
115struct f_owner_ex {
116 int type;
117 pid_t pid;
118};
Rich Felkeradb88e72012-09-08 00:33:04 -0400119#define FALLOC_FL_KEEP_SIZE 1
120#define FALLOC_FL_PUNCH_HOLE 2
Rich Felker00e6bbc2012-09-08 00:58:25 -0400121#define SYNC_FILE_RANGE_WAIT_BEFORE 1
122#define SYNC_FILE_RANGE_WRITE 2
123#define SYNC_FILE_RANGE_WAIT_AFTER 4
Rich Felker53147f92012-07-23 16:50:56 -0400124#define SPLICE_F_MOVE 1
125#define SPLICE_F_NONBLOCK 2
126#define SPLICE_F_MORE 4
127#define SPLICE_F_GIFT 8
Rich Felkeradb88e72012-09-08 00:33:04 -0400128int fallocate(int, int, off_t, off_t);
Rich Felker90f77052012-09-08 00:40:37 -0400129ssize_t readahead(int, off_t, size_t);
Rich Felker00e6bbc2012-09-08 00:58:25 -0400130int sync_file_range(int, off_t, off_t, unsigned);
Rich Felker53147f92012-07-23 16:50:56 -0400131ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
132ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
Rich Felker997ba922012-09-08 01:03:01 -0400133ssize_t tee(int, int, size_t, unsigned);
Rich Felkerc4ea0e32012-09-06 23:49:44 -0400134#define loff_t off_t
Rich Felker4e8b0932012-06-20 22:16:47 -0400135#endif
136
Rich Felker3b94dab2012-06-04 08:03:56 -0400137#if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
Rich Felker2dd8d5e2012-05-04 00:13:23 -0400138#define open64 open
139#define openat64 openat
140#define creat64 creat
141#define lockf64 lockf
142#define posix_fadvise64 posix_fadvise
143#define posix_fallocate64 posix_fallocate
144#define off64_t off_t
145#endif
146
Rich Felker0b44a032011-02-12 00:22:29 -0500147#ifdef __cplusplus
148}
149#endif
150
151#endif