split up installation target
[musl] / include / fcntl.h
1 #ifndef _FCNTL_H
2 #define _FCNTL_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7
8 #define __NEED_off_t
9 #define __NEED_pid_t
10 #define __NEED_mode_t
11
12 #ifdef _GNU_SOURCE
13 #define __NEED_size_t
14 #define __NEED_ssize_t
15 #define __NEED_struct_iovec
16 #endif
17
18 #include <bits/alltypes.h>
19
20 #include <bits/fcntl.h>
21
22 struct flock
23 {
24         short l_type;
25         short l_whence;
26         off_t l_start;
27         off_t l_len;
28         pid_t l_pid;
29 };
30
31 int creat(const char *, mode_t);
32 int fcntl(int, int, ...);
33 int open(const char *, int, ...);
34 int openat(int, const char *, int, ...);
35 int posix_fadvise(int, off_t, off_t, int);
36 int posix_fallocate(int, off_t, off_t);
37
38 #define O_ACCMODE 03
39 #define O_RDONLY  00
40 #define O_WRONLY  01
41 #define O_RDWR    02
42
43 #define F_DUPFD_CLOEXEC 1030
44
45 #define F_RDLCK 0
46 #define F_WRLCK 1
47 #define F_UNLCK 2
48
49 #define FD_CLOEXEC 1
50
51 #define AT_FDCWD (-100)
52 #define AT_SYMLINK_NOFOLLOW 0x100
53 #define AT_REMOVEDIR 0x200
54 #define AT_SYMLINK_FOLLOW 0x400
55 #define AT_EACCESS 0x200
56
57 #define POSIX_FADV_NORMAL     0
58 #define POSIX_FADV_RANDOM     1
59 #define POSIX_FADV_SEQUENTIAL 2
60 #define POSIX_FADV_WILLNEED   3
61 #define POSIX_FADV_DONTNEED   4
62 #define POSIX_FADV_NOREUSE    5
63
64 #undef SEEK_SET
65 #undef SEEK_CUR
66 #undef SEEK_END
67 #define SEEK_SET 0
68 #define SEEK_CUR 1
69 #define SEEK_END 2
70
71 #ifndef S_IRUSR
72 #define S_ISUID 04000
73 #define S_ISGID 02000
74 #define S_ISVTX 01000
75 #define S_IRUSR 0400
76 #define S_IWUSR 0200
77 #define S_IXUSR 0100
78 #define S_IRWXU 0700
79 #define S_IRGRP 0040
80 #define S_IWGRP 0020
81 #define S_IXGRP 0010
82 #define S_IRWXG 0070
83 #define S_IROTH 0004
84 #define S_IWOTH 0002
85 #define S_IXOTH 0001
86 #define S_IRWXO 0007
87 #endif
88
89 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
90 #define FAPPEND O_APPEND
91 #define FFSYNC O_FSYNC
92 #define FASYNC O_ASYNC
93 #define FNONBLOCK O_NONBLOCK
94 #define FNDELAY O_NDELAY
95
96 #define F_OK 0
97 #define R_OK 4
98 #define W_OK 2
99 #define X_OK 1
100 #define F_ULOCK 0
101 #define F_LOCK  1
102 #define F_TLOCK 2
103 #define F_TEST  3
104
105 int lockf(int, int, off_t);
106 #endif
107
108 #if defined(_GNU_SOURCE)
109 #define F_OWNER_TID 0
110 #define F_OWNER_PID 1
111 #define F_OWNER_PGRP 2
112 #define F_OWNER_GID 2
113 struct f_owner_ex {
114         int type;
115         pid_t pid;
116 };
117 #define SPLICE_F_MOVE 1
118 #define SPLICE_F_NONBLOCK 2
119 #define SPLICE_F_MORE 4
120 #define SPLICE_F_GIFT 8
121 ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
122 ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
123 #endif
124
125 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
126 #define open64 open
127 #define openat64 openat
128 #define creat64 creat
129 #define lockf64 lockf
130 #define posix_fadvise64 posix_fadvise
131 #define posix_fallocate64 posix_fallocate
132 #define off64_t off_t
133 #endif
134
135 #ifdef __cplusplus
136 }
137 #endif
138
139 #endif