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