1 // -*- C++ -*-
2 //===----------------------------------------------------------------------===//
3 //
4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 // See https://llvm.org/LICENSE.txt for license information.
6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef _LIBCPP_ERRNO_H
11 #define _LIBCPP_ERRNO_H
12 
13 /*
14     errno.h synopsis
15 
16 Macros:
17 
18     EDOM
19     EILSEQ  // C99
20     ERANGE
21     errno
22 
23 */
24 
25 #include <__config>
26 
27 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
28 #  pragma GCC system_header
29 #endif
30 
31 #if __has_include_next(<errno.h>)
32 #  include_next <errno.h>
33 #endif
34 
35 #ifdef __cplusplus
36 
37 #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
38 
39 #ifdef ELAST
40 
41 static const int __elast1 = ELAST+1;
42 static const int __elast2 = ELAST+2;
43 
44 #else
45 
46 static const int __elast1 = 104;
47 static const int __elast2 = 105;
48 
49 #endif
50 
51 #ifdef ENOTRECOVERABLE
52 
53 #define EOWNERDEAD __elast1
54 
55 #ifdef ELAST
56 #undef ELAST
57 #define ELAST EOWNERDEAD
58 #endif
59 
60 #elif defined(EOWNERDEAD)
61 
62 #define ENOTRECOVERABLE __elast1
63 #ifdef ELAST
64 #undef ELAST
65 #define ELAST ENOTRECOVERABLE
66 #endif
67 
68 #else  // defined(EOWNERDEAD)
69 
70 #define EOWNERDEAD __elast1
71 #define ENOTRECOVERABLE __elast2
72 #ifdef ELAST
73 #undef ELAST
74 #define ELAST ENOTRECOVERABLE
75 #endif
76 
77 #endif // defined(EOWNERDEAD)
78 
79 #endif // !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
80 
81 //  supply errno values likely to be missing, particularly on Windows
82 
83 #ifndef EAFNOSUPPORT
84 #define EAFNOSUPPORT 9901
85 #endif
86 
87 #ifndef EADDRINUSE
88 #define EADDRINUSE 9902
89 #endif
90 
91 #ifndef EADDRNOTAVAIL
92 #define EADDRNOTAVAIL 9903
93 #endif
94 
95 #ifndef EISCONN
96 #define EISCONN 9904
97 #endif
98 
99 #ifndef EBADMSG
100 #define EBADMSG 9905
101 #endif
102 
103 #ifndef ECONNABORTED
104 #define ECONNABORTED 9906
105 #endif
106 
107 #ifndef EALREADY
108 #define EALREADY 9907
109 #endif
110 
111 #ifndef ECONNREFUSED
112 #define ECONNREFUSED 9908
113 #endif
114 
115 #ifndef ECONNRESET
116 #define ECONNRESET 9909
117 #endif
118 
119 #ifndef EDESTADDRREQ
120 #define EDESTADDRREQ 9910
121 #endif
122 
123 #ifndef EHOSTUNREACH
124 #define EHOSTUNREACH 9911
125 #endif
126 
127 #ifndef EIDRM
128 #define EIDRM 9912
129 #endif
130 
131 #ifndef EMSGSIZE
132 #define EMSGSIZE 9913
133 #endif
134 
135 #ifndef ENETDOWN
136 #define ENETDOWN 9914
137 #endif
138 
139 #ifndef ENETRESET
140 #define ENETRESET 9915
141 #endif
142 
143 #ifndef ENETUNREACH
144 #define ENETUNREACH 9916
145 #endif
146 
147 #ifndef ENOBUFS
148 #define ENOBUFS 9917
149 #endif
150 
151 #ifndef ENOLINK
152 #define ENOLINK 9918
153 #endif
154 
155 #ifndef ENODATA
156 #define ENODATA 9919
157 #endif
158 
159 #ifndef ENOMSG
160 #define ENOMSG 9920
161 #endif
162 
163 #ifndef ENOPROTOOPT
164 #define ENOPROTOOPT 9921
165 #endif
166 
167 #ifndef ENOSR
168 #define ENOSR 9922
169 #endif
170 
171 #ifndef ENOTSOCK
172 #define ENOTSOCK 9923
173 #endif
174 
175 #ifndef ENOSTR
176 #define ENOSTR 9924
177 #endif
178 
179 #ifndef ENOTCONN
180 #define ENOTCONN 9925
181 #endif
182 
183 #ifndef ENOTSUP
184 #define ENOTSUP 9926
185 #endif
186 
187 #ifndef ECANCELED
188 #define ECANCELED 9927
189 #endif
190 
191 #ifndef EINPROGRESS
192 #define EINPROGRESS 9928
193 #endif
194 
195 #ifndef EOPNOTSUPP
196 #define EOPNOTSUPP 9929
197 #endif
198 
199 #ifndef EWOULDBLOCK
200 #define EWOULDBLOCK 9930
201 #endif
202 
203 #ifndef EOWNERDEAD
204 #define EOWNERDEAD  9931
205 #endif
206 
207 #ifndef EPROTO
208 #define EPROTO 9932
209 #endif
210 
211 #ifndef EPROTONOSUPPORT
212 #define EPROTONOSUPPORT 9933
213 #endif
214 
215 #ifndef ENOTRECOVERABLE
216 #define ENOTRECOVERABLE 9934
217 #endif
218 
219 #ifndef ETIME
220 #define ETIME 9935
221 #endif
222 
223 #ifndef ETXTBSY
224 #define ETXTBSY 9936
225 #endif
226 
227 #ifndef ETIMEDOUT
228 #define ETIMEDOUT 9938
229 #endif
230 
231 #ifndef ELOOP
232 #define ELOOP 9939
233 #endif
234 
235 #ifndef EOVERFLOW
236 #define EOVERFLOW 9940
237 #endif
238 
239 #ifndef EPROTOTYPE
240 #define EPROTOTYPE 9941
241 #endif
242 
243 #ifndef ENOSYS
244 #define ENOSYS 9942
245 #endif
246 
247 #ifndef EINVAL
248 #define EINVAL 9943
249 #endif
250 
251 #ifndef ERANGE
252 #define ERANGE 9944
253 #endif
254 
255 #ifndef EILSEQ
256 #define EILSEQ 9945
257 #endif
258 
259 //  Windows Mobile doesn't appear to define these:
260 
261 #ifndef E2BIG
262 #define E2BIG 9946
263 #endif
264 
265 #ifndef EDOM
266 #define EDOM 9947
267 #endif
268 
269 #ifndef EFAULT
270 #define EFAULT 9948
271 #endif
272 
273 #ifndef EBADF
274 #define EBADF 9949
275 #endif
276 
277 #ifndef EPIPE
278 #define EPIPE 9950
279 #endif
280 
281 #ifndef EXDEV
282 #define EXDEV 9951
283 #endif
284 
285 #ifndef EBUSY
286 #define EBUSY 9952
287 #endif
288 
289 #ifndef ENOTEMPTY
290 #define ENOTEMPTY 9953
291 #endif
292 
293 #ifndef ENOEXEC
294 #define ENOEXEC 9954
295 #endif
296 
297 #ifndef EEXIST
298 #define EEXIST 9955
299 #endif
300 
301 #ifndef EFBIG
302 #define EFBIG 9956
303 #endif
304 
305 #ifndef ENAMETOOLONG
306 #define ENAMETOOLONG 9957
307 #endif
308 
309 #ifndef ENOTTY
310 #define ENOTTY 9958
311 #endif
312 
313 #ifndef EINTR
314 #define EINTR 9959
315 #endif
316 
317 #ifndef ESPIPE
318 #define ESPIPE 9960
319 #endif
320 
321 #ifndef EIO
322 #define EIO 9961
323 #endif
324 
325 #ifndef EISDIR
326 #define EISDIR 9962
327 #endif
328 
329 #ifndef ECHILD
330 #define ECHILD 9963
331 #endif
332 
333 #ifndef ENOLCK
334 #define ENOLCK 9964
335 #endif
336 
337 #ifndef ENOSPC
338 #define ENOSPC 9965
339 #endif
340 
341 #ifndef ENXIO
342 #define ENXIO 9966
343 #endif
344 
345 #ifndef ENODEV
346 #define ENODEV 9967
347 #endif
348 
349 #ifndef ENOENT
350 #define ENOENT 9968
351 #endif
352 
353 #ifndef ESRCH
354 #define ESRCH 9969
355 #endif
356 
357 #ifndef ENOTDIR
358 #define ENOTDIR 9970
359 #endif
360 
361 #ifndef ENOMEM
362 #define ENOMEM 9971
363 #endif
364 
365 #ifndef EPERM
366 #define EPERM 9972
367 #endif
368 
369 #ifndef EACCES
370 #define EACCES 9973
371 #endif
372 
373 #ifndef EROFS
374 #define EROFS 9974
375 #endif
376 
377 #ifndef EDEADLK
378 #define EDEADLK 9975
379 #endif
380 
381 #ifndef EAGAIN
382 #define EAGAIN 9976
383 #endif
384 
385 #ifndef ENFILE
386 #define ENFILE 9977
387 #endif
388 
389 #ifndef EMFILE
390 #define EMFILE 9978
391 #endif
392 
393 #ifndef EMLINK
394 #define EMLINK 9979
395 #endif
396 
397 #endif // __cplusplus
398 
399 #endif // _LIBCPP_ERRNO_H
400