master
  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