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