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